iReport&JasperReportsで複数ページの結合方法がわからなかったので備忘録
こちらを参考にしました。
※メインレポートのサイズを基準に2つ目3つ目と作成されるので、大きさがバラバラのレポートはおかしくなる場合があります。
//メインレポートのフィールド作成
ArrayList<ArrayList<String>> メインレポートのデータソース = new ArrayList<ArrayList<String>>();
ArrayList<String> サブレポートのフィールド = new ArrayList<String>();
メインレポートのフィールド.add("テスト");
メインレポートのフィールド.add("テスト2");
メインレポートのフィールド.add("テスト3");
サブレポートのデータソース.add(メインレポートのフィールド);
//結合レポートのフィールド作成
ArrayList<ArrayList<String>> 結合レポートのデータソース = new ArrayList<ArrayList<String>>();
ArrayList<String> 結合レポートのフィールド = new ArrayList<String>();
結合レポートのフィールド.add("test");
結合レポートのフィールド.add("test2");
結合レポートのフィールド.add("test3");
結合レポートのデータソース.add(結合レポートのフィールド);// レポートのパラメータを作成する
HashMap parameters = new HashMap<String, String>();List<JRPrintPage> pages = null;//データソースの作成
dataSource = new JRBeanCollectionDataSource(メインレポートのデータソース);//メインレポート出力処理
JasperPrint print = JasperFillManager.fillReport(テンプレートパス+テンプレートファイル名, parameters, メインレポートのデータソース);//サブレポートの出力処理
JasperPrint print2 = JasperFillManager.fillReport(テンプレートパス+テンプレートファイル名, parameters, 結合レポートのデータソース);// 追加する帳票をメイン帳票に追加
pages = print2.getPages();
for(JRPrintPage page : pages ){
print.addPage(page);
}
// PDFファイルへ出力する
//直接出力の場合
JasperExportManager.exportReportToPdf(print,"pdf/output/sample_report2.pdf");
//byteにて格納する場合
byte[] bytes = JasperExportManager.exportReportToPdf(print);