JasperReportsを利用してSAStrutsでPDF出力するサンプル

ダウンロード

以下のリンクからjasperreports-5.0.0-project.zipをダウンロードします。
Jasper Reports 5.0.0 ダウンロード

jasperreports-5.0.0-project.zip を解凍して、

  • /lib/commons-beanutils-1.8.0.jar
  • /lib/commons-collections-2.1.1.jar
  • /lib/commons-digester-2.1.jar
  • /lib/commons-logging-1.1.1.jar
  • /lib/iText-2.1.7.js1.jar
  • /dist/jasperreports-5.0.0.jar

をコピーしてビルドパスを通します。
apache commonsについては重複するのでバージョンの新しいものにビルドパスを通します。

テンプレートファイルを作成

WEB-INF/templatesフォルダを作成してテンプレートを作成します。iReportのインストールについては、PDF帳票作成にはこれ!JasperReportsで日本語(IPAexフォント)を使うまで - DISってHONEY♪ @gungnir_odinを参考にしてください。


テンプレートのプロパティで、LanguageにJavaを選択します。
https://lh4.googleusercontent.com/-8W9EyqTcq84/UNnDco_0CYI/AAAAAAAAN9Y/SghdVHVxPFM/s800/01_Jaspersoft%2520iReport%2520Designer%25205.0.0.jpg


簡単なテキストを追加しました。
https://lh6.googleusercontent.com/-j_-NJJWS9_k/UNnDZcgr1FI/AAAAAAAAN84/oUKq3LAJW_8/s640/02_Jaspersoft%2520iReport%2520Designer%25205.0.0.jpg

テンプレートファイルをコンパイル

テンプレートのメニューから、「Compile Report」を選択してテンプレートファイルをコンパイルします。
https://lh6.googleusercontent.com/-kmeebDaOHcI/UNnDaIoUc0I/AAAAAAAAN9E/qvn2mSwtEY8/s800/03_compile_report.jpg


コンパイルするとjasperファイルが生成されます。
https://lh4.googleusercontent.com/-imYrOIvZTc8/UNnDbNoGHsI/AAAAAAAAN9M/4m2U3kEUuCM/s800/04_jasper_file.jpg

PDF出力処理

Actionクラスに以下の処理を記述します。

 @Execute(validator = false)
 public String index() throws JRException, IOException {

  String path = RequestUtil.getRequest().getSession().getServletContext()
    .getRealPath("/WEB-INF/templates/simple_report.jasper");

  byte[] bytes = JasperRunManager.runReportToPdf(path,
    new HashMap<String, Object>(), new JREmptyDataSource());

  HttpServletResponse response = ResponseUtil.getResponse();
  response.setContentType("application/pdf");
  response.setContentLength(bytes.length);
  OutputStream out = response.getOutputStream();
  out.write(bytes);
  out.flush();
  out.close();

  return null;
 }

PDF出力結果

https://lh6.googleusercontent.com/-5_I-pJ_-LmQ/UNnDbsqq30I/AAAAAAAAN9Q/Om2bhhEWDlA/s640/05_plain.jpg

まとめ

これでひとまずPDF出力が可能になりました。Jasper Reportsは導入までの学習コストも低く、手軽に導入することができそうです。