読者です 読者をやめる 読者になる 読者になる

PDF帳票作成にはこれ!JasperReportsで日本語(IPAexフォント)を使うまで

JasperReportsは、オープンソースの帳票作成ライブラリでPDFやExcelファイルを生成することができます。帳票レイアウトのデザインには、iReportというツールを提供しており、これもオープンソースで各OSに対応したアーカイブが提供されています。

iReportは、グラフィカルにデザインができ、すぐにプレビューできるためるため、帳票作成には欠かせないツールとなります。

そこで、日本語フォントとして定評があるIPAexフォントを利用して、iReportで日本語を含んだPDF帳票を作成するところまで紹介します。

IPAexフォントをiReportに設定

今回IPAexフォントを選んだのは、オープンソースライセンス(厳密には"IPAフォントライセンス")で提供されているためです。生成するPDFに使用しているフォントを埋め込む必要がある場合、OS固有のフォント(ex. MSゴシック、MS明朝 等)ではライセンス違反にあたる可能性があります。

さて、設定していきます。

IPAexフォントを解凍

ダウンロードしたIPAexfont00201.zipを解凍します。解凍すると以下のttfファイルが展開されます。

  • ipaexg.ttf (IPAexGothic)
  • ipaexm.ttf (IPAexMincho)
iReportの設定

MacOSXの場合
[iReport]-[環境設定]で[オプションダイアログ]を表示し、[iReport]-[Fonts]-[Install Font]を押下します。
https://lh3.googleusercontent.com/-9_Y8aVdrxvs/UNMAUm6V5wI/AAAAAAAAN0s/3MpVxljSPCY/s640/01_Font%2520Installation.jpg
ここで、ipaexg.ttfのパスを指定して「次へ >」を押下します。


https://lh5.googleusercontent.com/-UQ_YMQ0EV5o/UNMAS2UyWUI/AAAAAAAAN0c/HOyQ_iNKCFI/s640/02_Font%2520Installation%2520Family%2520Detail.jpg

PDF Details欄で、PDF Encodingに「Identity-H (Unicode with horizontal writing)」、Embed this font in the PDF documentにチェックを付けます。
IPAexフォントを使用したPDFを、IPAexフォントがインストールされていないOSで開いた場合、文字化けする可能性があるためフォントをPDFに埋め込む必要があります。その設定を行なっています。

ipaexm.ttfについても、同じように設定を行います。

サンプルレポートを作成

下のように、IPAexフォントを使用したレポートを作成しました。
https://lh6.googleusercontent.com/-yhvOH6UCCvs/UNMAVv9U4WI/AAAAAAAAN04/lr-T_wbNzW8/s640/03_Jaspersoft%2520iReport%2520Designer%25205.0.0-1.jpg

iReportのプレビューでIPAexフォントが表示されることを確認

正常にIPAexフォントで表示されていることが確認できました。

https://lh3.googleusercontent.com/--BameAagksU/UNMAVE3j6OI/AAAAAAAAN00/ESRxUA_vLh4/s640/04_Jaspersoft%2520iReport%2520Designer%25205.0.0.jpg

IPAexフォントがPDFに埋め込まれていることを確認

PDFを出力して、Adobe Readerで[ファイル]-[プロパティ]を選択し「文章のプロパティ」を表示します。フォントタブで、画像のようにIPAexフォントが埋め込みサブセットとして表示されています。これでOKです。
https://lh5.googleusercontent.com/-eYfwlSZig3U/UNMATuOLA8I/AAAAAAAAN0k/38K2jZEHa9Y/s640/05_confilm%2520pdf.jpg

まとめ

日本語を含んだPDF帳票を作成する場合、JasperReports+iReport+IPAフォントの組合せは、もう鉄板ではないでしょうか。
これで環境ができましたので、どんどん帳票デザインしてみましょう〜 (*´ω`*)ノシ