FOP也为内存而疯狂

在用DocBook和FOP生成HTML文件及PDF过程中,HTML文件能顺利生成,但无法生成PDF文件。问题出在表格上。

 

最早时,此表格与其他内容一起放在单独的xml文件中,能顺利生成PDF文件。后来随着内容的增多,将不同的章节放到不同的xml文件,此表格随之放在其他的xml文件中后,问题就来了。FOP的报错信息:

 

警告: Warning(Unknown location): fo:table, table-layout="auto" is currently not supported by FOP
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

 

看到table-layout="auto" is currently not supported by FOP,很自然就想着应该是FOP不支持table-layout="auto"。顺着该思路,想尽一切办法应对FOP中表格的问题,浪费了整整一晚上,无果而终。

 

沮丧之余,回想之前既然能够顺利生成PDF,说明FOP即使当前不支持table-layout="auto",但也能应付上面的情况,FOP的表格功能应该不会有问题。回头再看出错信息,"OutOfMemoryError",内存溢出!

 

fop.bat文件中最后一行调用了java:

 

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

 

将其修改为:

 

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

 

我的爱机内存为4G,查看Windows任务管理器后,还余2G多可用,便将java在堆上默认的64M内存改为1G。重新调用fop.bat,终于顺利生成了PDF文件。

 

真是FOP也为内存而疯狂!

你可能感兴趣的:(FOP也为内存而疯狂)