オープンソースのERP iDempiereに組み込まれているJasper Reportsでは、2014年1月時点では、日本語や中国語などのアジア圏の文字を表示しようとするとエラーとなってしまいます。
日本JasperServerユーザ会のサイトに、日本語や中国語をPDF形式でレポート表示する場合には、iTextAsianを使いましょうという内容のコンテンツが表示されていたので、それを参考にiDempiereのJasperReportsを日本語でも表示できるように改修したいと思います。
目次
まずは、iReportで作成したレポート定義をiDempiereから出力しようとして表示されるエラーを確認します。次のようなエラーが表示されます。
org.adempiere.webui.window.ZkJRViewer init
SEVERE: Could not load the following font :
pdfFontName : HeiseiKakuGo-W5
pdfEncoding : UniJIS-UCS2-HW-H
isPdfEmbedded : false
net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName : HeiseiKakuGo-W5
pdfEncoding : UniJIS-UCS2-HW-H
isPdfEmbedded : false
iReportのインストール先のmodulesフォルダのextフォルダの中に、iTextAsian.jarがあるのでコピーします。
コピーしたiTextAsian.jarファイルを、"org.adempiere.base"プロジェクトの配下に貼り付けて配置します。
iTextAsian.jarファイルを右クリックし、ビルドパスに追加します。
そうすると、参照ライブラリーにiTextAsian.jarが追加されます。
※.classpathファイルにパスが追加されます。
iTextAsian.jarをクラスパスに追加
マニフェストエディターのランタイムタブのクラスパス設定で、iTextAsian.jarを追加します。そうすると、MANIFEST.MFファイルのBundole-ClassPathに追加されます。
iTextAsian.jarをバイナリ―ビルドに追加
マニフェストエディタのビルドタブのバイナリ―ビルドに、iTextAsian.jarを追加します。そうすると、build.propertiesファイルの"bin.includes"にiTextAsian.jarが追加されます。
org.adempiere.ui.zkにある.tomcatpluginファイルの<webClassPathEntries>要素の下に、<webClassPathEntry>/tools/lib/iTextAsian.jar</webClassPathEntry>を追加します。
※.tomcatpluginは、通常見えないので、"ナビゲーター"を使用して表示します。
【補足説明】.tomcatpluginファイルの編集
org.adempiere.ui.zkにある.tomcatpluginファイルの<webClassPathEntries>要素の下に、<webClassPathEntry>/tools/lib/iTextAsian.jar</webClassPathEntry>を追加する事は、実際にはjasperReportを日本語化対応するのには不要な作業かもしれません・・・。時間がある時に詳細を調査して行きたいと思います。
iDempiereからJasperReportsを使用してPDFでレポートを出力する事が確認できます。