JasperReportsをバッチ処理のコマンドラインプログラムで出力する(JasperStarter) ~  JasperReports

JasperReportsをPDF,プリンタに出力するためには、Javaでプログラムを作り実行するのが一般的です。

しかし、javaの開発する環境がない場合などに、出力するツールがあると便利です。

コマンドラインベースで出力できるツールが「JasperStarter」です。

http://jasperstarter.cenote.de/

ダウンロードとインストール

 

ダウンロードはsourceforgeからです。

https://sourceforge.net/projects/jasperstarter/files/

 

今回はzipファイルを選びました。

適当なフォルダに展開すれば使用できます。

日本語フォント対応

インストールしただけでは日本語フォントを使用するとエラーがでます。

Exception in thread “main" net.sf.jasperreports.engine.util.JRFontNotFoundException: Font “IPAGothic" is not available to the JVM. See the Javadoc for more details.

 

そこでJasperStudioでFontのjarファイルを作成します。

プロジェクトを選び右クリック

プロパティを選ぶ

 

Font->書体を選び->Exportし、適当な名前で保存します。ipafont.jarにしました。

 

これをjasperstarterのjdbcに入れれば準備完了です。

実行サンプル

テンプレートファイルもしくはコンパイル済みのjasperファイルとCSVデータを指定します。

ヘッダ付きのCSVのため、オプションも付加しています。

内蔵viewerで見るとき

 

jasperstarter pr test_A4xml.jrxml -f view -t csv --data-file yasai_utf8.csv --csv-first-row

 

jasperstarter pr test_A4xml.jasper -f view -t csv --data-file yasai_utf8.csv --csv-first-row

 

PDFに出力するとき

 

jasperstarter pr test_A4xml.jrxml -f pdf -t csv --data-file yasai_utf8.csv --csv-first-row

 

jasperstarter pr test_A4xml.jasper -f pdf -t csv --data-file yasai_utf8.csv --csv-first-row

これでjavaのプログラミング無しでJasperStudioで作成したテンプレートで印刷またはPDF出力ができます。

バッチ処理に組み込むことができるので、自動化も進められます。

javaでプログラムをするときの参考サイト

 

https://qiita.com/AkihiroTakamura/items/da7f7ef2d7da21a17ef1

https://www58.atwiki.jp/chapati4it/pages/118.html

必要なライブラリをインポートしてCSVデータを読みこみ、出力命令を入れます

import
java.io.File;
import
java.io.FileInputStream;
import
java.util.HashMap;
import
java.util.Map;
import
net.sf.jasperreports.engine.JasperRunManager;
import
net.sf.jasperreports.engine.data.JRCsvDataSource;

public class Sample {
  public static void main(String[] args) {

//パラメータ設定
    Map<String, Object> parameters = new HashMap<String, Object>();
    paramMap.put("ReportPara", "パラメータ");
//パラメータ不要のとき
    Map<String, Object> parameters = new HashMap<>();

//CSVデータソースの定義
    JRCsvDataSource dataSource = new JRCsvDataSource(new FileInputStream(new File("input.csv")));
    dataSource.setUseFirstRowAsHeader(true);

//PDF出力
    JasperRunManager.runReportToPdfFile("tempalate.jasper", "output.pdf", parameters, dataSource);
  }
}

 

 

JasperReports

Posted by eightban