2015年4月26日日曜日

ADempiereのJapserReportでIPAフォントを使う

ADempiereの帳票は、JasperReportを使うことで多様なデザインの帳票を作成することができる。

JasperReportとは、OSSの帳票作成プログラムのことである。
.NetやVBに精通している人であれば、GrapeCity社のActiveReportをご存知かと思うが、それと同じような機能を持っているJava用のしかもオープンソースの帳票処理プログラムである。

このJapserReportをADempiereで使うときに、問題となるのがフォントである。
特にLinuxサーバに実装するとき、マイクロソフト系のフォントが使えないという問題がある。
そこで、IPAフォントを使うというのが解決策となる。

また、ADempiereのEARにIPAフォントを含ませることで、OSにIPAフォントをインストールしたりする手間が省けたり、違うOSにEARを持っていったときにフォントなしエラーが出るなどの問題がなくなる。

ここでは、IPAフォントをEARに含める方法をご紹介する。


■IPAフォントを使う設定(EAR内にIPAフォントを含める)

①クラスパスを通したフォルダに、jasperreports_extension.propertiesを用意して、中身を以下にする

net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.ireport=org/compiere/fonts/fonts_extend.xml

②fonts_extend.xmlを以下のフォルダに作成する。
org/compiere/fonts

中身を以下にして、UTF-8で保存する。

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
   <fontFamily name="IPA Pゴシック">
       <normal>org/compiere/fonts/ipagp.ttf</normal>
       <pdfEncoding>Identity-H</pdfEncoding>
       <pdfEmbedded>true</pdfEmbedded>
   </fontFamily>
   <fontFamily name="IPAゴシック">
       <normal>org/compiere/fonts/ipag.ttf</normal>
       <pdfEncoding>Identity-H</pdfEncoding>
       <pdfEmbedded>true</pdfEmbedded>
   </fontFamily>
   <fontFamily name="IPAexゴシック">
       <normal>org/compiere/fonts/ipaexg.ttf</normal>
       <pdfEncoding>Identity-H</pdfEncoding>
       <pdfEmbedded>true</pdfEmbedded>
   </fontFamily>
   <fontFamily name="IPA P明朝">
       <normal>org/compiere/fonts/ipamp.ttf</normal>
       <pdfEncoding>Identity-H</pdfEncoding>
       <pdfEmbedded>true</pdfEmbedded>
   </fontFamily>
   <fontFamily name="IPA明朝">
       <normal>org/compiere/fonts/ipam.ttf</normal>
       <pdfEncoding>Identity-H</pdfEncoding>
       <pdfEmbedded>true</pdfEmbedded>
   </fontFamily>
   <fontFamily name="IPAex明朝">
       <normal>org/compiere/fonts/ipaexm.ttf</normal>
       <pdfEncoding>Identity-H</pdfEncoding>
       <pdfEmbedded>true</pdfEmbedded>
   </fontFamily>
</fontFamilies>

③②と同じフォルダに、②のxml内で指定したIPAのttfファイルを配置する。


■フォント変更作業(JasperReport内)
Jrxmlのソースを開いて、fontNameとpdfFontNameでIPAフォントを使用するように置換する。fontNameはフォント名、pdfFontNameはjarファイル名(パス不要)を指定。

<font fontName="MS 明朝" size="16" pdfFontName="HeiseiMin-W3" pdfEncoding="UniJIS-UCS2-HW-H"/>
↓↓
<font fontName="IPA明朝" size="16" pdfFontName="HeiseiMin-W3" pdfEncoding="UniJIS-UCS2-HW-H" isPdfEmbedded="true"/>

0 件のコメント:

コメントを投稿