我目前正在为一个公司项目开发一个模块,正在使用Apache FOP 2.3从xmls生成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并工作。但是,在更改为最新版本后,我一直遇到这些问题。
我在xsl和示例文件上使用Apache-FOP 2.3的命令行版本从日志中获取更多信息(因为eclipse没有给我错误的上下文或行(。
从那以后,我更正了我的 xsl 文件,它们会产生正确的 pdf 输出。