我有一個打印100萬(1頁)PDF文件的Java批量作業。 此批處理作業將在每5天后運行一次。Java Communication Server打印100萬PDF文件
對於通過批處理作業打印100萬(1頁)PDF文檔,哪種方法更好?
在此PDF大部分的文/段是同樣爲所有客戶,只有少數的信息動態地從數據庫中挑取作爲(客戶ID /名稱/到期日/到期日/金額)
我們已經嘗試以下
1)碧玉報告
2)iText的
但上述2種方法並不總是達到更好的性能爲靜態文本/創建段爲每個文檔運行。
所以我想一些辦法像
會有用佔位動態值(用戶ID /名稱/到期日/到期日/金額)的模板。
將會有一個像Open Office這樣的通信服務器,它會有這個模板。
通過我們在Web服務器上部署的Java應用程序將從數據庫中獲取數據集並傳遞到此通信服務器上,其中模板已經打開到內存中,並且僅從數據集開始,動態佔位符值將被更改並且模板將被保存爲「Save如「命令。
以上方法是否可以實現,如果是,哪個API /通信服務器更好?
這裏是碧玉報告準則供參考
InputStream is = getClass().getResourceAsStream("/jasperreports/reports/"+reportName+".jasper");
JasperPrint print = JasperFillManager.fillReport(is, parameters, dataSource);
pdf = File.createTempFile("report.pdf", "");
JasperExportManager.exportReportToPdfFile(print, pdf.getPath());
什麼是您在JasperReports的方法嗎?在Jasper中,你可以創建一個'JasperPrint'對象,其中加載了Jasper文件,並且每次都使用新的數據填充它。 – medopal
每5天有一百萬頁......而另一片森林則死亡。 (OK,所以你可能不會實際打印出來,但即使產生百萬的PDF文件是要咀嚼很多資源。) –
示例代碼碧玉上面 –