【问题标题】:Docx4j Convert to PDF, FOP Issues/ Cannot perform the transformation errorDocx4j 转换为 PDF,FOP 问题/无法执行转换错误
【发布时间】:2013-09-18 16:48:50
【问题描述】:

Docx4j 版本 2.8.1.3

docx 非常简单,只有一些文本,但它似乎不适用于任何 docx。

在 docx4j 论坛上可能更容易查看源代码/异常。 http://www.docx4java.org/forums/pdf-output-f27/docx4j-to-pdf-fop-issues-cannot-perform-the-transformation-t1652.html

如果在一个地方回答,我会同时更新答案

这里是例外

fourseasons.general.conversionservice.converter.AbstractConverter FOP issues 
org.docx4j.openpackaging.exceptions.Docx4JException: FOP issues

  Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Cannot perform the transformation
     at org.docx4j.XmlUtils.transform(XmlUtils.java:911)
     at org.docx4j.XmlUtils.transform(XmlUtils.java:802)
     at org.docx4j.convert.out.pdf.viaXSLFO.Conversion.output(Conversion.java:349)
     ... 230 more
  Caused by: javax.xml.transform.TransformerException: java.lang.NullPointerException
     at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2405)
     at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
     at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
     at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178)
     at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2400)
     at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2270)
     at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1356)
     at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:709)
     at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1273)
     at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1251)
     at org.docx4j.XmlUtils.transform(XmlUtils.java:909)
     ... 232 more
  Caused by: java.lang.NullPointerException
     at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:282)
     at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:248)
     at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
     at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178)
     at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2400)

创建字节的代码:

     Mapper fontMapper = new IdentityPlusMapper();
     wordmlPackage.setFontMapper(fontMapper);

     org.docx4j.convert.out.pdf.viaXSLFO.Conversion c = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(
           wordmlPackage);

     ByteArrayOutputStream os = new ByteArrayOutputStream();
     c.output(os, new PdfSettings());

     os.close();
     binarypdf = os.toByteArray();

【问题讨论】:

  • 需要确认/尝试的几件事:(1) 您的类路径中是否有最新版本的 Xalan? (2) 您是否在没有字体映射元素的情况下进行了测试(即直接进行转换)?

标签: java docx4j


【解决方案1】:

我也有同样的问题。 Ctrl + A 突出显示所有页面元素并找到无法转换的元素。

【讨论】:

  • 您可以编辑您的帖子以补充您的原始答案。评论不是为了这个目的。
【解决方案2】:

我不知道是什么导致了这个问题,但我将其范围缩小到无法处理的格式。我只是开始从错误文档的副本中逐页删除。然后,当我最终到达文档将转换的位置(转换为 PDF)时,我知道我找到了有问题的页面。

从那里只需从 Word 中剪切页面内容,将其粘贴到另一个应用程序(在我的情况下为 Pages),然后再回到 Word 中并为该页面重做我的格式。将前面的页面粘贴回去,瞧。错误消失了。

【讨论】:

  • 更新:我发现在某些段落上设置“Page Break Before”属性,之前也有正常的分页符,可能会导致这个问题。
猜你喜欢
  • 1970-01-01
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 2017-05-17
  • 1970-01-01
相关资源
最近更新 更多