eightban's memo

残しておきたい記事をまとめてみました。このブログに書いてあるドキュメントやブログで配布しているファイルの使用によって発生するいかなる損害に対してもこのブログの管理者は責任を負いません。使用する場合は自己責任のもとに使用してください。

JasperReports

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

Copyright© eightban's memo , 2024 All Rights Reserved Powered by STINGER.