java - 当我将报表导出为包含 100,000 个字符的 PDF 格式时,出现 SAXException

标签 java apache-fop

 [org.xml.sax.SAXException: Mismatch: page-sequence (http://www.w3.org/1999/XSL/Format) vs. root (http://www.w3.org/1999/XSL/Format)]
javax.xml.transform.TransformerException: org.xml.sax.SAXException: Mismatch: page-sequence (http://www.w3.org/1999/XSL/Format) vs. root (http://www.w3.org/1999/XSL/Format)
    at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:725)
    at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243)
    at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2069)
    at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1171)
    at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:634)
    at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1088)
    at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1066)
    at com.ca.calm.reporter.pdf.PDFGenerator.buildPdf(PDFGenerator.java:1132)
    at com.ca.calm.reporter.pdf.PDFGenerator.generatePdf(PDFGenerator.java:848)
    at com.ca.calm.reporter.pdf.PDFGenerator.exportReport(PDFGenerator.java:626)
    at calmReporter.exportReport(calmReporter.java:521)
    at calmReporter.handleRequest(calmReporter.java:161)
    at com.ca.elm.common.sponsor.SponsorBase.Run(SponsorBase.java:159)
Caused by: org.xml.sax.SAXException: Mismatch: page-sequence (http://www.w3.org/1999/XSL/Format) vs. root (http://www.w3.org/1999/XSL/Format)
    at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:335)
    at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:169)
    at org.apache.xalan.transformer.ResultTreeHandler.endElement(ResultTreeHandler.java:307)
    at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:716)
    ... 12 more

我尝试将报告导出为 XML 格式的 PDF,其中一列包含超过 100,000 个字符。导出失败,我收到 SAXException。我们使用 fop 0.95。

如果您遇到过此类问题,请帮助我。

最佳答案

这似乎在 FOP FAQ 中进行了讨论:

This exception is usually a follow-up error after another exception. Sometimes the original exception gets swallowed by Xalan's default ErrorListener (should be fixed in the latest Xalan release).

解决方法是在 Transformer 上设置显式 ErrorListener

更多详细信息可以在上面的链接中找到。

关于java - 当我将报表导出为包含 100,000 个字符的 PDF 格式时,出现 SAXException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715768/

相关文章:

java - 使用 FOP 2.0 的断字问题

java - 相同 instanceof 但不同类的方法不可见性

java - 如何在Java中正确使用三角函数和Pi

java - Spring 数据 JPA : How to execute aggregate functions

Java SunPKCS11 通过网络访问 USB 加密 token

apache-fop - 如何通过 Apache FOP 在 AFP 中使用 TrueType 字体?

ubuntu - 在 Ubuntu 上将 fop 作为 www-data 运行

java - XML-FO 嵌套列表 block

java - 使用 FOP 生成 SVG 不起作用

java - 当没有定义请求对象时,如何使用 Spring Boot 发送 SOAP 请求