Java/帳票/JasperReports5.0 PDFに動的に画像を埋め込み

まずJasperReportsに付いてきたサンプルから画像の埋め込み方を確認。

// 画像読み込み
Image image = Toolkit.getDefaultToolkit().createImage(
    JRLoader.loadBytesFromResource("dukesign.jpg"));
// 画像の読み込み完了を待つ
MediaTracker traker = new MediaTracker(new Panel());
traker.addImage(image, 0);
try {
  traker.waitForID(0);
} catch (Exception e) {
  e.printStackTrace();
}
 
// パラメータ作成
Map<String, Object> parameters = new HashMap<String, Object>();
// 読み込んだ画像をパラメータに設定
parameters.put("SummaryImage", image);
 
  • JasperReportsのサンプル「jasper」から抜き出したコードです。
  • やってることはとても簡単、以下の3点だけです。
  1. JRLoaderで画像を読み込む
  2. トラッカーで画像の読み込み完了を待つ
  3. 読み込んだ画像をパラメータのマップに埋め込む

  • JasperReportsのサンプル「jasper」用のレポートです。
  • こちらもやることは簡単で、以下の2点です。
  1. レポートにImageをのっける
  2. ImageExpressionに「$P{SummaryImage}」の形式で、パラメータに設定した画像を指定する

それではサンプルを作ってみましょう。

サンプルテンプレート

  • 前回使った、テンプレートを加工して、判子を押す箱を「frame」で作りました。
  • そして、画像を埋め込むimageに判子画像をパラメータで渡して表示してみます。
    • imageのImageExpressionには「$P{Image1}」を指定しました。

サンプルプログラム JasperSample4.java

// (2)パラメータの生成
Map<String, Object> parameters = new HashMap<String, Object>();
// 画像をパラメータに設定(手抜き)
Image img = new ImageIcon("ちゃぱてぃ.gif").getImage();
parameters.put("Image1", img);
 
  • 前回使った、JasperSample3.javaの変更部分です。
  • JasperReportsに付属のjasperサンプルより少々手抜きなコードになってますが、必要ならトラッキングも追加して下さい。
  • JasperSample4.javaをダウンロードすると、変更部分以外のサンプルフルになっています。

読み込ませる画像

  • 透過GIF作ってみたんですが、後ろのオブジェクトを透過させる事ができなかったので、普通に判子画像だけ埋め込みました。

実行結果

  • 前回と少々変わってますが、ちゃんと判子の枠の中に今回作った判子画像が埋め込まれています。

サンプルダウンロード

サンプルソース JasperSample4.java
サンプル用csv JasperSample4.csv
出力pdf JasperSample4.pdf
サンプル用テンプレート JasperSample4.jrxml
はんこ画像 

コメント

  • えふぁd - てtst 2013-12-09 16:13:29
名前: