Какое максимальное количество страниц может сгенерировать apache fop? - PullRequest
3 голосов
/ 21 апреля 2010

Привет, я работал с Apache FOP и, когда количество страниц превышает около 130 страниц, он не мог сгенерировать PDF .... Есть ли ограничение на номер страницы или длину XML-файла ...

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

пространство at java.io.BufferedReader. (BufferedReader.java:80) at 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 а: 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)

1 Ответ

3 голосов
/ 07 мая 2010

Я создал отчеты из xmls длиной в несколько сотен тысяч строк. Однако у меня были некоторые проблемы при создании небольших отчетов, заполненных svgs.

Ваша проблема, вероятно, в том, что java по умолчанию выделяет только 32 МБ памяти (если я правильно помню), поэтому в ней не хватает памяти.

В файле fop.bat (предположим, что вы работаете в Windows) добавьте следующий параметр

rem Увеличьте стандартный размер кучи Java VM, чтобы большие отчеты получали достаточно памяти установить JAVAOPTS = -Xmx512M

и измените строку исполнения следующим образом

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

Это должно работать как минимум с 0,95

...