gpt4 book ai didi

java - Flying Saucer (xhtmlrenderer)内存不足

转载 作者:行者123 更新时间:2023-12-02 08:31:00 25 4
gpt4 key购买 nike

我正在尝试使用 Flying Saucer 创建一个非常大的 PDF,但内存似乎不足。

下面是一些堆栈跟踪,这表明 Flying Saucer 不是完全可扩展的......或者我做错了什么?

java.lang.OutOfMemoryError: Java heap space
at com.sun.org.apache.xerces.internal.util.XMLStringBuffer.append(XMLStringBuffer.java:205)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.refresh(XMLDocumentScannerImpl.java:1520)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.invokeListeners(XMLEntityScanner.java:2070)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanLiteral(XMLEntityScanner.java:1063)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(XMLScanner.java:974)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanAttribute(XMLNSDocumentScannerImpl.java:460)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:277)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2747)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:637)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:708)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
at org.xhtmlrenderer.resource.XMLResource$XMLResourceBuilder.createXMLResource(XMLResource.java:189)
at org.xhtmlrenderer.resource.XMLResource.load(XMLResource.java:71)

java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:597)
at java.lang.StringBuffer.append(StringBuffer.java:329)
at org.xhtmlrenderer.css.newmatch.Matcher$Mapper.mapChild(Matcher.java:385)
at org.xhtmlrenderer.css.newmatch.Matcher.matchElement(Matcher.java:153)
at org.xhtmlrenderer.css.newmatch.Matcher.getMapper(Matcher.java:235)
at org.xhtmlrenderer.css.newmatch.Matcher.getCascadedStyle(Matcher.java:85)
at org.xhtmlrenderer.context.StyleReference.getCascadedStyle(StyleReference.java:199)
at org.xhtmlrenderer.layout.SharedContext.getStyle(SharedContext.java:548)
at org.xhtmlrenderer.layout.SharedContext.getStyle(SharedContext.java:527)
at org.xhtmlrenderer.layout.BoxBuilder.createChildren(BoxBuilder.java:1069)
at org.xhtmlrenderer.layout.BoxBuilder.createChildren(BoxBuilder.java:113)
at org.xhtmlrenderer.render.BlockBox.ensureChildren(BlockBox.java:902)
at org.xhtmlrenderer.layout.BoxBuilder.createChildren(BoxBuilder.java:1115)
at org.xhtmlrenderer.layout.BoxBuilder.createChildren(BoxBuilder.java:113)
at org.xhtmlrenderer.render.BlockBox.ensureChildren(BlockBox.java:902)
at org.xhtmlrenderer.layout.BoxBuilder.createChildren(BoxBuilder.java:1135)

最佳答案

您可能只需要增加堆大小;例如尝试将 -Xmx256m 添加到用于启动应用程序的 java 命令中。

您的推断可能也是正确的, Flying Saucer 并不是完全可扩展的。我希望它创建并使用完整输入 XML 和完整目标 PDF 文件的内存中表示。 (这样做很可能是最简单的。)

然而,“非常大的”PDF 文件也无法缩放,因为它可能会给人们下载和查看它带来问题。所以也许您应该考虑生成多个 PDF 文件。

关于java - Flying Saucer (xhtmlrenderer)内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3368544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com