今回は、JavaでのJasper ReportsでのPDF出力の方法についてご紹介します。
初めてJasper Reportsを実務で使った時には使い方がわからず戸惑うことが多かったですが、使い方に慣れればPDF出力をする時にかなり便利な機能です。
実際に実務でJasper Reportsを利用してPDF出力機能を作成した経験を元にJasper Reportsの基本的な使い方をまとめています。
今回の記事を参考にJasper Reportsについての知識を深めてみてください。
Jasper Reportsはオープンソースやから、誰でも利用できるんやで!
記事の信頼性:元教員の現役エンジニアの「しう」がJavaでのJasper Reportsの利用方法について書いています。実際の開発現場でもJasper Reportsを利用して開発しました。
Jasper Reportsとは?
JasperReportsは、Jaspersoft社が開発している帳票用のライブラリです。
オープンソースのため無料で利用することができ、PDF出力だけでなくExcelやHTMLなどの形式でも出力することができます。
レポートレイアウトはjrxml(JasperReports XML)というXML形式のファイルで定義されていて、レイアウトはjrxml、データの扱いはサーバーサイド(Java)というように分けて扱っています。
合計数や平均の計算などはjrxmlファイルに記載をしておけば、Javaの方で計算せずに計算結果を表示させることもできます。
(どちらで計算する方がいいのかは改修時のコストも含めて検討する必要があります)
Jasper Reportsのインストール方法
Jasper Reportsのインストール方法について解説します!
こちらについては後日記事にしていく予定です。お待ちください。
Jasper Reports 【Javaでの開発環境の構築】
Jasper Reports のJavaでの開発環境の設定について説明します!
Jasper Reportsのインストールが完了した後は依存ライブラリの設定をする必要があります。
Jaspersoft Communityのサイトにリリース情報が記載してあり、2022年12月時点の最新では6.20.0となります。
Mavenを利用する場合は下記のように依存関係の追加をします。
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.20.0</version>
</dependency>
Gradleの場合は下記のようになります。
implementation group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.20.0'
MavenとGradleの変換についてはMVN Repositoryというサイトだとどちらも表示されるからオススメだよ!
jasper reports以外にもMavenとGradleの対応が載ってるねんな
Jasper Reports でのフォーマットの作成
Jasper Reports PDF出力をするためには下記の2つの実装が必要になります。
- レポートレイアウトの作成
- データの受け渡し
レポートレイアウトはインストールしたJaspersoft Studioを利用するので、どのように作成をしていくのか見ていきましょう。
ファイルの形式はjrxmlファイルというxmlファイルの形式で作成していくので、jrxmlファイルで知っておくべきタグの使い方も説明します。
jrxmlファイル(テンプレート)の作成方法【Jaspersoft Studio】
jrxmlファイル(テンプレート)の作成方法を説明します!
Jaspersoft Studioでは次のように利用します。
まずはJasper Reportsのファイルを新規作成していきますが、今回はSimple Blueのフォーマットを選んで作成してみましょう。
☟クリックすると拡大できます
今回はデータベースの指定はせずに作成しておきます。
新規ファイルを作成したら次のようになります。
左上のMyReportsに自分の作成したjrxmlファイル一覧が表示されるので、今後新規追加した場合はこちらに追加されます。
jrxmlファイルでどのようなソースが書かれているか見たい場合は真ん中下方のSourceをクリックすると見ることができます。
(他の人がjrxmlファイルを用意してくれて不備がある場合はこの機能を使って比較すると便利です)
これで初期レイアウトの作成が完了しましたが、実際にデータの受け渡しをする場合はパラメータの記載も必要になります。
Jasper Reports でのPDF出力には3種類のパラメータがあるのでそちらについても解説していきます。
jrxmlファイルで利用する3つのパラメータ
jrxmlファイルでは次の3つのパラメータを利用します!
- parameter($P)
- field($F)
- variable($V)
parameter($P)
パラメータではレポートの中で1つだけ使いたいものに利用します。
例えば従業員1人1人に従業員用のレポートを作成する場合の従業員名を右上に表示させたい時が該当します。
パラメータでのデータの受け渡しの時にはMap型でキーとセットで受け渡します。
パラメータがどの型に対応しているのかは重要なポイントなのでしっかりと抑えておきましょう。
具体的には次のような手順でパラメータを作成していきます。
OutlineのParameters上で右クリックをして、Create Parameterをクリックすると下記の画像のように新規でパラメータが作成されます。
右の表示されているPropertiesでパラメータ名と型の設定をすることができます。
パラメータはMap型でデータの受け渡しをするのですが、このパラメータ名はMapのキーを同じ名前に、型もMapでデータを渡すときの型とそろえるようにしましょう。
【対応するMap(別途解説予定)】
Map map = new HashMap();
map.put("employeeName", "追加する文字列(String型)")
ここでString型を渡したいのにLong型で設定してしまうと型の不一致でエラーとなります。
Javaでは方が一致しているかも重要な項目なのでチェックをしておきましょう。
作成後にSourceで確認してみるとparameterが作成されていることが確認できます。
ここまででparameterを利用する準備が完了しました。
Parameterの作成ができたら、PaletteにあるText Fieldをドラッグしてレイアウトに追加してみましょう。
レイアウトに追加をしたらPropertiesのText FieldのExpression右の鉛筆ボタンをクリックします。
Parametersをクリックすると先ほど作成したemployeeNameが見つかるので、ダブルクリックすると上書きされます。
上書き出来たらFinishを押しましょう。
上手く作成で来たら$P{employeeName}が表示されています。
Sourceを選択するとtextFieldタグに$P{ employeeName }が作成されていることも確認できます。
field($F)
フィールドではレポートの中で複数のデータを扱う場合に利用します。
例えば従業員の毎日の勤務時間を表示する場合には、月に約30日分の勤務時間のデータを表示するためパラメータでなくフィールドを利用する方が適切です。
フィールドでのデータの受け渡しの時にはList型で受け渡します。
フィールドでMap型を利用しようとすると上手くいかないので気を付けるようにしましょう。
具体的には次のような手順でフィールドを作成していきます。
OutlineのFields上で右クリックをして、Create Fieldをクリックすると下記の画像のように新規でパラメータが作成されます。
右の表示されているPropertiesでフィールド名と型の設定をすることができるので、今回はフィールド名をemployeWorkTimeとしておきます。
フィールドはList型でデータの受け渡しをする点に注意をしておきましょう。
フィールドでも型が不一致だとエラーとなるのでチェックを忘れないようにしましょう。
作成後にSourceで確認してみると今回はfieldが作成されていることが確認できます。
ここまででfieldを利用する準備が完了しました。
Fieldの作成ができたら、PaletteにあるText Fieldをドラッグしてレイアウトに追加してみましょう。
レイアウトに追加をしたらPropertiesのText FieldのExpression右の鉛筆ボタンをクリックします。
Fieldsをクリックすると先ほど作成したemployeWorkTimeが見つかるので、ダブルクリックすると上書きされます。
上書き出来たらFinishを押しましょう。
上手く作成で来たら$F{ employeWorkTime }が表示されています。
Sourceを選択するとtextFieldタグに$F{ employeeName }が作成されていることも確認できます。
variable($V)
ヴァリアブルでは、データベースから直接データを使用しない場合などに利用します。
例えばレポートのページ番号や合計数、平均値などはヴァリアブルで表示することができます。
ヴァリアブルについてもレイアウトでの利用方法は同じですが、一番最初に作成した時にページ数は「”Page “+$V{PAGE_NUMBER}+” of”」と表示されています。
実際にPreviewのボタンを押すとページ番号が表示されていることが確認できます。
ここまででPDF出力をするために必要なフォーマットの作成が完了しました。
Jasper Reports・ JavaでのPDF出力
ここまで作成したフォーマットにサーバーサイド(Java)からデータを渡してあげる必要があります。
データの受け渡しの方法については後日執筆予定です。
まとめ
いかがでしたか?
今回は、次の順番でJavaでのJasper Reportsの利用方法について解説しました。
- Jasper Reportsとは?
- Jasper Reportsのインストール方法
- Jasper Reports 【Javaでの開発環境の環境構築】
- Jasper Reportsでのフォーマットの作成
- jrxmlファイルで利用する3つのパラメータ
- Jasper Reports・ JavaでのPDF出力
Jasper Reportsではjrxmlファイルを利用していて普段は書かない記載方法も出てきます。
パラメーターやフィールドの役割の違いをしっかりと理解しておくことがスキル定着の近道となります。
実装をする機能においてPDF出力が求められる場面は多いため、JavaでのJasper Reportsを用いて一度実装した経験があると同じような場面に遭遇しても自信をもって取り組むことができます。
一度経験があれば設計書の作成時にも工数の予測も立てやすいため、必要に応じてチャレンジしてみてください。
ちなみにJasper Reportsについての講座はBuild Reports with JasperReports, Java and Spring Boot
Jasper Reportsは日本語の講座がなかったため英語での解説になりますが、操作方法を動画で実際に見ることができるため英語での解説も苦労せずに理解することができます。
☟あわせて読みたい 「しう」のオススメブログ
コメント