JasperReport触ってみる
仕事でPDF帳票作成にJasperReportを使うことになったのでちょっと触ってみる。
テンプレートファイルはiReportで作成。
package sample; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; public class PDFSample { //テンプレートファイル名 public static final String TEMPLATE_FILE = "template/SampleTemplate.jrxml"; //出力PDFファイル名 public static final String PDF_FILE = "pdf/Sample.pdf"; /** * PDF出力サンプル * @param args * @throws Exception */ public static void main(String[] args) throws Exception { //テンプレートファイルコンパイル JasperReport jasperReport = JasperCompileManager.compileReport(TEMPLATE_FILE); //データソース作成 List list = createSampleData(); JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list); //データバインド JasperPrint print = JasperFillManager.fillReport(jasperReport, null, ds); //PDF出力 JasperExportManager.exportReportToPdfFile(print, PDF_FILE); } //データ作成 private static List<DataBean> createSampleData() { List<DataBean> list = new ArrayList<DataBean>(); for(int i=0;i<50;i++) { DataBean bean = new DataBean(); bean.setSAMPLE_COLMN("あああああ"); bean.setREGIST_DATE(new Date()); list.add(bean); } return list; } }
意外とにあっという間にできた。
メモ
- 日本語フォントを使用するには「iTextAsian.jar」と「iTextAsianCmaps.jar」が必要。
- Beanをデータソースとして使用するには「JRBeanCollectionDataSource」を使う。
テンプレートファイルのコンパイルは最初の1回だけでいいから、実際に業務で使う場合は、コンパイル済みファイルを読み込むようにしたほうがよさそう。
iReportでテンプレート作る時にフィールド名をDBのカラム名と同じにしたせいで、データソースに使うBeanのフィールド名が非常にいけてない事に。ああ〜