3

嗨,我正在使用 apache fop,当页数超过约 130 页时,它无法生成 pdf .... 页码或 xml 文件的长度是否有任何限制...

Exception in thread "main" java.lang.OutOfMemoryError: Java heap

空间在 java.io.BufferedReader.(BufferedReader.java:80) 在 java.io.BufferedReader.(BufferedReader.java:91) 在 org.apache.xml.dtm.ObjectFactory.findJarServiceProviderName(ObjectFac tory.java:579) 在org.apache.xml.dtm.ObjectFactory.lookUpFactoryClassName(ObjectFactory .java:373) 在 org.apache.xml.dtm.ObjectFactory.lookUpFactoryClass(ObjectFactory.jav a:206) 在 org.apache.xml.dtm.ObjectFactory.createObject (ObjectFactory.java:131)

        at org.apache.xml.dtm.ObjectFactory.createObject(ObjectFactory.java:101)

        at org.apache.xml.dtm.DTMManager.newInstance(DTMManager.java:135)
        at org.apache.xpath.XPathContext.reset(XPathContext.java:350)
        at org.apache.xalan.transformer.TransformerImpl.reset(TransformerImpl.ja
va:505)
        at org.apache.xalan.transformer.TransformerImpl.transformNode(Transforme
rImpl.java:1436)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp
l.java:709)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp
l.java:1284)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp
l.java:1262)
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:214)
        at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:125)
        at org.apache.fop.cli.Main.startFOP(Main.java:166)
        at org.apache.fop.cli.Main.main(Main.java:197)
4

1 回答 1

3

我创建了由几十万行长的 xml 制成的报告。但是,我在创建充满 svg 的较小报告时遇到了一些问题。

您的问题可能是默认情况下 java 仅分配 32 MB 内存(如果我没记错的话),因此内存不足。

在 fop.bat 文件中(假设您在 Windows 上运行)添加以下设置

rem 增加标准 Java VM 堆大小,以便更大的报告获得足够的内存 set JAVAOPTS=-Xmx512M

并按如下方式更改执行行

"%JAVACMD%" %JAVAOPTS% %LOGCHOICE% %LOGLEVEL% -cp "%LOCALCLASSPATH%" org.apache.fop.cli.Main %FOP_CMD_LINE_ARGS%

这应该至少适用于 0.95

于 2010-05-07T17:07:13.047 回答