【发布时间】:2018-06-06 13:52:51
【问题描述】:
我目前正在为一个公司项目开发一个模块,并且正在使用 Apache FOP 2.3 从 xml 生成 pdf。
我在使用 FOP 时遇到问题,当我尝试使用我们的测试文件测试实现时,FOP 生成几乎是空的 pdf,它们的唯一内容是:
%PDF-1.4 %клмн
我得到了一个
org.apache.fop.fo.ValidationException: "fo:table-row" is missing child elements. Required content model: (table-cell+) (No context info available)
错误。 我尝试在 fop.conf 文件中将严格验证器设置为 false,但这对异常没有帮助。
这是我的 pdf 生成代码:
FopFactory fopFactory = FopFactory.newInstance(FOPCONFIGFILE);
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, destination);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xslFile));
JDOMSource docEntreeJDOM = new JDOMSource(docJDOM);
org.w3c.dom.Document doc = transformJdomToDom(docJDOM);
Result result = new SAXResult(fop.getDefaultHandler());
transformer.transform(docEntreeJDOM, result);
该模块使用 fop 0.20.5 并且工作正常。但是,在更改为最新版本后,我一直遇到这些问题。
【问题讨论】:
-
根据报错信息判断FO标记无效。如果缺少 table-cell 子元素,则必须添加它们。这就是我们所能说的。如果您需要更具体的帮助,请提供minimal reproducible example。
-
是的,我已经开始检查 FOP 2.3 命令行版本以获取更多信息,我发现了错误。
标签: java xml xslt apache-fop