最近项目需求,要求用JAVA模拟旧有的系统的打印机制,生成PDF。
数据源是XML的,模版是旧系统的文本源文件(描述了位置和显示信息)。由于经验不足,在搜索各大网站之后,发现了adobe的livecycle designer(LC),这样只要能看懂旧系统的源文件,就能设计出新的模版,然后通过JAVA把XML数据灌入进去,就生成PDF了。
由于Adobe的产品都要收费,所以先下载了试用版,做试验,实验结果相当成功(做实验时候数据量小,根本发现不了问题),开发相关的程序也很顺手,所以就果断采用了。
在进一步的研究后,发现adobe LC的源代码是XML格式的,就更兴奋了,开发了一个小程序,读取旧模版的文本源文件,直接生成XDP(LC的源代码),设计模版的工作都可以节约出来,于是竭力推荐,公司就购买了一套acrobat professional。
初期的测试都没问题,但是后来的测试中,发现了一个很大的问题,数据量如果过大(生成的PDF页数超过200页),打开生成的报表就很耗内存,很慢。。。
于是上ADOBE 官方网站,并在各大论坛上找原因,最终发现,用LC设计的PDF模版,生成的最终报表仍然是动态的(XFA),每次打开报表时候,adobe reader会解析XML并组织格式进行显示(pdf的其他reader都读不了这种报表)。
怎么才能把这种动态的PDF报表转成静态的呢?研究liv