`
yuanlanxiaup
  • 浏览: 860252 次
文章分类
社区版块
存档分类
最新评论

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也为内存而疯狂!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics