100 万 (1 ページ) の PDF ドキュメントを印刷する Java バッチ ジョブがあります。このバッチ ジョブは 5 日ごとに実行されます。
バッチジョブで100万(1ページ)のPDF文書を印刷する場合、どの方法が良いですか?
この PDF では、ほとんどのテキスト/段落がすべての顧客について同じであり、データベースから動的に選択される情報はごくわずかです (顧客 ID/名前/期日/有効期限/金額)。
私たちは次のことを試しました
1) ジャスパーレポート
2) iText
ただし、各ドキュメントの静的テキスト/段落は常に実行時に作成されるため、上記の 2 つの方法ではパフォーマンスが向上しません。
だから私はいくつかのアプローチを考えています
動的な値 (顧客 ID/名前/期日/有効期限/金額) のプレースホルダーを含むテンプレートがあります。
このテンプレートを持つ Open Office のような Communication Server があります。
Web サーバーにデプロイされた Java アプリケーションを介して、データベースからデータセットを取得し、この通信サーバーに渡します。テンプレートは既にメモリに開かれており、データセットから動的プレースホルダー値が変更され、テンプレートは「名前を付けて保存」コマンドのように保存されます。
この上記のアプローチは達成可能でしょうか? はいの場合、どの 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());