我有一个 Java 批处理作业,可以打印 100 万(1 页)PDF 文档。此批处理作业将每 5 天运行一次。
对于通过批处理作业打印 100 万(1 页)PDF 文档,哪种方法更好?
在此 PDF 中,所有客户的大部分文本/段落都是相同的,只有少数信息是从数据库中动态选择的(客户 ID/姓名/到期日/到期日/金额)
我们尝试了以下
1) 贾斯珀报告
2) 文本
但是以上两种方法并没有提供更好的性能,因为每个文档的静态文本/段落总是在运行时创建。
所以我正在考虑一些方法,比如
将有一个模板,其中包含动态值的占位符(客户 ID/姓名/到期日/到期日/金额)。
将会有一个像 Open Office 这样的通信服务器,它会有这个模板。
通过我们部署在 Web 服务器上的 Java 应用程序将从数据库中获取数据集并传递到该通信服务器,其中模板已经打开到内存中,并且仅从数据集中动态占位符值将被更改,模板将像“另存为”命令一样保存。
上述方法是否可以实现,如果可以,哪个 API / 通信服务器更好?
这是 Jasper 报告代码供参考
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());