问题标签 [docx4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1977 浏览

java - 如何在 docx4j 生成的 docx 中从 servlet 渲染图像

这个问题与这个问题非常相似,但与 docx4j 而不是飞碟有关。

我正在使用 docx4j 通过返回生成的 docx 文档的 servlet 将 xhtml 文档呈现给 docx。xhtml 文档具有从另一个 servlet 请求的图像。图像 servlet 在返回适当的图像之前检查谁已登录。下面的代码显示了如何请求图像:

我的问题是图像的 http 请求来自XHTMLImporter(我认为)而不是登录用户,因此图像 servlet 不知道谁登录,因此不会返回所需的图像。

我目前正在使用下面的代码来呈现 xhtml 文档:

在飞碟中,我可以使用 a ReplacedElementFactory,但这似乎不是 docx4j 使用的东西。有没有办法在转换过程中替换元素?

0 投票
1 回答
739 浏览

docx4j - docx4j 差异器显示出比预期更多的差异

我有两个文件:

  1. 文件 1(输入)
  2. 文件 2(输出)

文档 2 是通过转换过程传递文档 1 的结果,该过程使任何内容和格式保持不变(通过 Word 中的并排比较验证)。

但是,该过程会从 .docx 文件中删除许多 ID 号。

例如,

变成

通过以下代码根据每个文档的转储:

使用此处推荐的 docx4j Differencer 比较方法,所有内容(除了没有应用格式的第一行)都显示为修改。

问题是:差异是由于缺少 id、格式还是其他原因造成的?

如果它很重要,我们在这种情况下使用 docx4j 对我们的往返过程执行自动健全性/回归测试(即应用“无损”过程并期望没有差异)

0 投票
1 回答
896 浏览

docx4j - docx4j - 从 XmlUtils.marshalToString() 中省略的节点

使用XMLUtils.marshalToString()来自 docx4j,我在两个 docx 文件的相同位置有以下内容(word/document.xml解压缩 .docx 后从对应的文件中提取)。这些是文件之间的唯一区别:

在第一个文档中,<w:t>节点的输出如上。

但是,在第二个中,将<w:t>打印一个空节点,如下所示:

我在http://www.schemacentral.com/sc/ooxml/e-w_p-1.html检查了w:t架构,是一个有效的包含元素。w:r

编辑:上面的链接是w:p元素的架构,而不是w:t. 正确的链接w:t是:http ://www.schemacentral.com/sc/ooxml/e-w_t-1.html 。它清楚地显示了唯一可接受的内容w:t是字符串(不是 aw:r或任何其他标签)。因此(正如下面 Jason 的回答所建议的那样),来自的 XMLdocument.xml无效,并且(因此)没有被解组到 docx4j 中。因此,文本不可用于 XmlUtils.marshalToString() 的输出。

是什么阻止了第二个块被输出?

0 投票
1 回答
5303 浏览

java - xlsx4j - 如何在电子表格中设置列宽?

我正在尝试使用 xlsx4j 将 JTable 导出到 XLSX 文件,但无法设置列宽。我已成功设置所有列的默认宽度,但我想设置列的宽度以自动适应数据长度:

上面的代码在控制台中显示:lstCols.size() 为 0,所以看起来在向 SheetData 添加行和单元格后,没有列定义。

另一方面,如果我以这种方式手动创建列:

我在 XLSX 文件中遇到灾难性错误。

0 投票
1 回答
546 浏览

linux - HeadlessException 在 RedHat 服务器上使用 docx4j xhtmlrenderer

在 RedHat 服务器上java.awt.HeadlessException使用 a 时,我得到了a。Docx4jReplacedElementFactory有谁知道这个的解决方法?(除了运行 Xvfb)

我已经深入研究了堆栈跟踪,问题的根源是java.awt.GraphicsEnvironment.getDefaultScreenDevice()在无头环境中运行时会引发异常。这是记录在案的: “抛出:HeadlessException - 如果 isHeadless() 返回 true”(请参阅​​对从 HeadlessGraphicsEnvironment.getDefaultScreenDevice 抛出的 java.awt.HeadlessException 的评论)。

鉴于getDefaultScreenDevice按规定工作,使用 docx4j 时是否有另一种方法可以避免去那里?

查看 的来源org.docx4j.org.xhtmlrenderer.util.ImageUtil.getGraphicsConfiguration,我们看到:

堆栈跟踪:

0 投票
1 回答
547 浏览

java - 将 HTML 转换为 pptx4j 元素

我已经成功实现了使用 docx4j 的 XHTMLImporter 类将 XHMTL 转换为 docx4j (Word) 元素。但是,我现在需要为 pptx4j(Powerpoint)做同样的事情,但是经过大量搜索和反复试验,似乎没有任何与 pptx4j 的 XHTMLImporter 对应的东西,也似乎不可能获取 XHTMLImporter 的 docx4j-element 结果并将它们附加到 pptx4j 形状。

有人为pptx4j解决了这个问题吗?和/或,谁能指出我可以用来执行此任务的库或源代码?

谢谢!

卡尔

0 投票
2 回答
4890 浏览

android - 在 android 中使用 docx4j 读取 word doc 时遇到以下问题

目的:将word doc的内容读到cosole上

使用环境:Windows 7 32bit Eclipse IDE Indigo Android 4.1 API 16 Java 1.6 库:docx4j-2.8.0

以下是我用来在控​​制台上打印 word doc 文本的代码片段

当我尝试执行上述代码时,出现以下问题 eclipse logcat 显示以下日志

0 投票
1 回答
281 浏览

xml-namespaces - 在 docx4j Differencer.diff() 调用中使用 o:allowincell 未声明的命名空间

当使用 docx4j 将文档转换过程的结果与原始结果进行比较时,我们的一个测试用例出现以下错误:

com.topologi.diffx.xml.UndeclaredNamespaceException: The namespace URI "urn:schemas-microsoft-com:office:office for allowincell" has not been mapped to any prefix.

我通过使用此方法(基于此答案)将原始文档与自身进行比较,消除了转换过程引入错误的可能性:

堆栈跟踪:

我已经解压缩了 *.docx 文件,并且o:allowincell似乎正确映射到 包含的 .docx 文件xmlns:o="urn:schemas-microsoft-com:office:office"<w:document>标签中document.xml

测试文档可以从这里下载:https ://docs.google.com/open?id=0B6_h2TfqvEdeZE43X3RSWnFIZHc

关于如何解决这个问题的任何想法?

0 投票
0 回答
211 浏览

jaxb - docx4j 报告未更改的表数据的差异

我创建了一个带有 2x2 表格的 *.docx 文件,每个单元格都包含= 行号和= 列号Cell x-y的文本。xy

当我通过一个简单的转换过程传递这个文档时,docx4j 的Differencer.diff()方法报告没有差异(即没有w:insw:del标记)。

尽管 .docx 在<w:tc> -> <w:p>标签内将原始文档的文本像这样分解,但这是可以预料到的并且处理得非常干净:

这在转换后的文档中:

但是,如果我在文档中的表格上方添加文本“表格标题”,则原始文档的内容(Word 的处理,我对此无能为力)单元格合并为一个<w:r>

转换后的文档的唯一区别xml:space="preserve"是插入:

但是,docx4j 的Differencer.diff()方法现在报告每个单元格的内容已插入,并在生成的 diff 文档中显示以下内容作为每个单元格的w:tc内容w:p

并将每个单元格的内容显示为已删除,紧跟在结束<w:tbl>标记之后:

我知道 Differencer 能够忽略xml:space="preserve"属性,因为它会在表格之前插入文本,所以我怀疑这是原因。

这些表格场景是否超出了预期的用例Differencer?是使用/调用错误吗?漏洞?

任何指导表示赞赏。

0 投票
2 回答
1503 浏览

java - 使用 Java 生成 word 和 powerpoint 文档的最佳实践

我有一个 docx 格式的 word 文档,在 Word 2007 中创建。我需要打开此文档并在文档中的某些位置添加文本、图像和表格。

我也需要用 Powerpoint 做同样的事情。

我在谷歌搜索他们在文档中使用字符串并搜索并替换它们时看到了解决方案。我不认为那是这样做的方法。

我发现的另一个解决方案是在 word 文档中插入书签,然后在书签之后附加数据。这是通过 Apache POI 库完成的。这个解决方案看起来更好。但是如果我需要将相同的数据放在文档的不同部分会发生什么。我不想为插入相同的数据定义多个唯一的书签。

所以基本上我正在寻找一种方法来创建单词模板并定义可以注入数据的关键字。

更新 找到了这个http://code.google.com/p/xdocreport/它几乎完全符合我的要求。