Java/帳票/JasperReports5.0 一番簡単なPDF出力

  • パラメータも、データソースも使わない、静的テキスト(ラベル)だけのテンプレートを作成し、PDF出力するサンプルです。
  • 日本語出力もしたいよねって事で日本語と英語、それぞれのラベルを用意してあります。


1.「iReport」で簡単なPDFを作成

    • 「iReport」はここから「iReport-5.0.0-windows-installer.exe」をダウンロードしてインストールします。


2.PDFフォントの設定

  • 日本語を出力したいラベルのプロパティで、以下のように設定します。
    • Pdf Font name... → HeiseiMin-W3
      • 平成明朝でしょうか?他にも日本語を出力できそうなフォントを試してみるといいと思います。
    • Pdf Encoding → UniJIS-UCS2-H(Japanese)
      • 他にも日本語を出力できそうなエンコードがありました。いろいろ(略
      • Identity-H (Unicode with ... にすると、出力PDFの日本語が大変なことに!

3.「iTextAsian.jar」をダウンロードしてビルドパスに追加。

  • JasperReports5.0に付いてきたjarファイルも全部ビルドパス通して置きましょう。
    • JasperReports5.0には色んなjarファイルが同梱されていますが、「iTextAsian.jar」は含まれていません。
  • ここから「iTextAsian.jar」をダウンロードします。
  • 好きな所にコピーして「iTextAsian.jar」にビルドパスを通します。

4.JavaからPDFを出力

import java.util.*;
import net.sf.jasperreports.engine.*;
 
// JasperReports5.0用データソース使わないPDF出力
// 参考 http://foolprogrammer.blogspot.jp/2012/04/itext217_28.html
// http://thinkit.co.jp/free/tech/4/4/1.html
public class JasperSample1 {
  public static void main(String[] args) {
    // テンプレートXMLファイルのパス
    String templatePath = "./JasperSample1.jrxml";
    // 出力するPDFファイルのパス
    String destPath = "./JasperSample1.pdf";
 
    try {
      // (1)テンプレートXMLのコンパイル
      JasperReport jasperReport = JasperCompileManager
          .compileReport(templatePath);
 
      // (2)パラメータの生成
      Map<String, Object> paramMap = new HashMap<String, Object>();
 
      // (3)データの動的バインド(今回は何もバインドしませんけど)
      JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
          paramMap, new JREmptyDataSource());
 
      // (4)PDFへ出力
      JasperExportManager.exportReportToPdfFile(jasperPrint, destPath);
 
    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
    }
  }
}
 
  • JasperReports5.0付属のサンプルでは、antを使ってテンプレートのコンパイル、データのバインド、PDF出力をしていましたが、あれはあれで面倒なのでJavaだけで出力するサンプルです。
  • パラメータを使わない場合でも、空のMapは必要です。
  • データソースを使わない場合も、空のデータソース「new JREmptyDataSource()」を渡します。
    • データソースの部分に「null」を指定すると、表示するデータなし!と判断されて、真っ白なPDFが出力されてしまうので要注意です!
      • 実際にデータソースを指定した場合でも、データがなければ同様の出力になるのかも。


出力されたPDFを確認

  • 上の画像のように、日本語と英語のラベルが出力されていれば成功です。

サンプルダウンロード


コメント

名前: