- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基于 Java 的内容管理系统,公司员工可以将报告输入到 Web 表单中,并将报告正文输出到富文本字段中。然后可以使用 XSL-FO 将这些报告输出为 PDF。
员工的常见做法(我无法改变或争论)是在 Microsoft Word 中准备报告,然后将这些报告复制粘贴到 CMS 中。
浏览器富文本框在保留和显示 MS Word 内容格式方面做得还可以。但是,在 FO 中转换为 PDF 时,大部分格式都会丢失。最常见的提示之一是表格列和行的大小被破坏。
为了说明这一点,在 word 中看起来像这样:
在浏览器中看起来像这样:
但是在 pdf 中看起来像这样:
总的来说,我的问题是如何将粘贴的 MS Office 内容转换为 FO,同时保留原始格式?有没有一个库可以做到这一点?
<小时/>有些事情可能有帮助,也可能没有帮助,对于可能帮助解决这个问题的人来说,可能很明显,也可能不明显。
粘贴的 Word 内容将存储在我们的数据库中,如下所示:
<p>Words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words.</p> <p>Words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words.</p> <p>Words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words.</p> <table cellspacing="0" cellpadding="0" border="1"> <tbody><tr> <td width="208" valign="top"> <p>test</p> </td> <td width="44" valign="top"> <p>b</p> </td> <td width="372" valign="top"> <p>cd</p> </td> </tr> <tr> <td width="208" valign="top"> <p> </p> </td> <td width="44" valign="top"> <p> </p> </td> <td width="372" valign="top"> <p> </p> </td> </tr> <tr> <td width="208" valign="top"> <p> </p> </td> <td width="44" valign="top"> <p> </p> </td> <td width="372" valign="top"> <p> </p> </td> </tr> <tr> <td width="208" valign="top"> <p> </p> </td> <td width="44" valign="top"> <p> </p> </td> <td width="372" valign="top"> <p> </p> </td> </tr> <tr> <td width="208" valign="top"> <p> </p> </td> <td width="44" valign="top"> <p> </p> </td> <td width="372" valign="top"> <p> </p> </td> </tr> <tr> <td width="208" valign="top"> <p> </p> </td> <td width="44" valign="top"> <p> </p> </td> <td width="372" valign="top"> <p> </p> </td> </tr> <tr> <td width="208" valign="top"> <p> </p> </td> <td width="44" valign="top"> <p> </p> </td> <td width="372" valign="top"> <p> </p> </td> </tr> </tbody></table> <p> </p> <!--[if gte mso 9]><xml> </xml><![endif]--><!--[if gte mso 9]><xml> Normal 0 false false false EN-US X-NONE X-NONE </xml><![endif]--><!--[if gte mso 9]><xml> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0in; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} table.MsoTableGrid {mso-style-name:"Table Grid"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-priority:39; mso-style-unhide:no; border:solid windowtext 1.0pt; mso-border-alt:solid windowtext .5pt; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-border-insideh:.5pt solid windowtext; mso-border-insidev:.5pt solid windowtext; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style> <![endif]-->
那么,这似乎是从内容中提取 MS 样式表,然后将其转换为 FOP(Apache FO 处理器,我们用来转换/显示 FO)可以理解的内容的问题?
看起来表格大小是存储在表格标签本身中的,但问题似乎是在转换时出现以下一系列错误:
10/11/19 11:03 AM: Error in width property value '208': org.apache.fop.fo.expr.PropertyException: No conversion defined 10/11/19 11:03 AM: Error in width property value '44': org.apache.fop.fo.expr.PropertyException: No conversion defined 10/11/19 11:03 AM: Error in width property value '372': org.apache.fop.fo.expr.PropertyException: No conversion defined
我将如何定义从 MS 的宽度数字到 FOP 可以理解的数字的转换?
注意:这是一个在 Java 1.5 上运行的旧版 CMS,使用 Apache Fop .20.5。如果有一个库可以满足我的要求,但它不兼容,我希望它是开源的,这样我就可以将它“降级”以与 Java 1.5 一起使用。
最佳答案
width
属性应该是长度或百分比(请参阅 https://www.w3.org/TR/xsl11/#width )。为了解决眼前的问题,您的 XSLT 应该在生成提供给 FOP 的 XSL-FO 时在数字后面添加一个单位。
诸如 width="208px"
甚至 width="208pt"
之类的内容应该可以阻止 FOP 提示。当您能够生成 PDF 时,您可能会发现 208px 太宽或太窄,因此您可能需要在处理过程中缩放数字(或者您可能可以修改 FOP 的想法)每英寸像素数)。
关于java - 将从 Word 粘贴到 Firefox 富文本编辑器的文本转换为 xsl-fo,同时保留格式 (Java) (Apache FOP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58346949/
我想像 wordpress 的 css 管理器一样为我的网站制作 css 管理器。我想在 textarea 中打开 css 文件,这样我就可以编辑它,而不是在按下提交按钮后,应该保存 css 文件中的
我不知道这是一个有效的问题。我见过大多数插件和对话框定义的 CKEditor 示例都使用变量“editor”。我想知道它是什么以及它的值来自哪里。 例如 CKEDITOR.plugins.add( '
如果你希望极认真地学习和使用 XML,那么一定想要找一款称手的 XML 编辑器 XML 是基于文本的 XML是基于文本的标记语言 XML可被类似记事本这样的简单的文本编辑器来创建和编辑 不过在
有没有人成功地将 Summernote 编辑器与 Meteor 一起使用? 见 http://hackerwins.github.io/summernote/ 我在我的模板中包含了以下 div:
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
如何使文本默认从右向左对齐(p:editor)。 当前使用 primefaces 3.0.M2-SNAPSHOT。现在无法更新到新版本吗? 这是阿拉伯语版本应用程序所必需的。 谢谢 最佳答案 在 we
如何启动或安装 Eclipse XSD 编辑器? 根据this看来它应该开箱即用。我创建了 XMLExamples 项目,当我打开 Catalogue.xsd 时,Eclipse 将其视为文本文件。如
我爱wysihtml5但我找不到任何关于向元素添加类这样简单的文档。 基本上我正在寻找的是一种允许 blockquote 元素有 2 种不同变体的方法: blockquote.pull-leftblo
我真的很想要一个在 Django 中实现文本编辑器的清晰直接的示例,就像提议的 pagedown 或 markdownx 一样。我无法在 Django 2.0 中使用这些解决方案中的任何一个,并且我找
是否有支持 REPL 和大括号匹配的 ClojureCLR 编辑器?我找到了一个将对 ClojureCLR 的支持添加到 Visual Studio 的项目:vsClojure ,但无法构建它。还有其
GWT 的编辑器框架非常好用,它不仅可以用于编辑POJO,还可以用于只读显示。 但是,我并不完全确定进行内联编辑的最佳做法是什么。 假设我有一个 PersonProxy 并且我有一对 Presente
我对 primefaces 编辑器的第一个问题是它不接受来自 Chrome 和资源管理器中的 MS word 文档的文本,但在 Firefox 中工作正常。有没有办法让它直接接受来自 MS word
我使用 Prototype JS 作为主要 JS 库,并且我已将最后一个 RedactorJS 与 jQuery 以无冲突模式集成,但我无法启动如下功能: jQuery('#redactor').re
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5年前关闭。 Improve thi
我正在 Laravel 项目上使用 redactor 作为文本编辑器。 每当编辑器位于页面上并初始化时,每当我单击任意位置时都会收到此错误。 Uncaught TypeError: $(...).cl
我在带有 jQuery .show("slide") 动画的界面设计中使用tinyMCE 时遇到问题。由于表单的复杂性,它像向导一样被分为多个页面,但它不使用下一步和后退按钮。相反,它使用部分名称
如何制作像 wufoo.com 表单编辑器中那样的拖放式编辑器 最佳答案 通常客户端应用程序是使用某种客户端框架构建的。比较流行的是(排名不分先后): GWT YUI jQuery 首先检查这些内容,
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
有人建议我使用具有语法错误检查和调试功能的 Javascript 编辑器吗? Eclipse IDE 有可用的插件吗?或者您可以建议最适合错误检查和调试的任何编辑器。 提前致谢。 最佳答案 您可以安装
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我是一名优秀的程序员,十分优秀!