jasperreports-5.6.0 を使用、
jasperreports で必要な iText の jar 、を入手する。
itext-2.1.7.jar は、Maven central Repopsitory に存在しないので、ここから jasperreports-5.6.0-project.zip ダウンロードしたら
中に入っている itext-2.1.7.jar をローカルリポジトリに格納する。
mvn install:install-file -Dfile=c:/work/itext-2.1.7.jar -DgroupId=com.lowagie -DartifactId=itext -Dversion=2.1.7 -Dpackaging=jar -DgeneratePom=true
jrxml ファイルを編集して、日本語文字を出力するためフォント設定を行い、以下の様に、Exception が出る!!
net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName : HeiseiKakuGo-W5
pdfEncoding : UniJIS-UCS2-H
isPdfEmbedded : true
at net.sf.jasperreports.engine.export.JRPdfExporter.getFont(JRPdfExporter.java:2116)
at net.sf.jasperreports.engine.export.JRPdfExporter.getChunk(JRPdfExporter.java:1906)
at net.sf.jasperreports.engine.export.JRPdfExporter.getPhrase(JRPdfExporter.java:1875)
at net.sf.jasperreports.engine.export.SimplePdfTextRenderer.getPhrase(SimplePdfTextRenderer.java:89)
at net.sf.jasperreports.engine.export.SimplePdfTextRenderer.render(SimplePdfTextRenderer.java:99)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportText(JRPdfExporter.java:2238)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:950)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:909)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:786)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:513)
at net.sf.jasperreports.engine.JasperExportManager.exportToPdfFile(JasperExportManager.java:157)
at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:505)
Maven で、itext-asian-5.2.0.jar を取得して解決させようとしても、ダメ!である。
JARファイル名 = iTextAsian.jar を使わないとならないらしく、これは、iReport-5.6.0.zip の中、
ireport/modules/ext の中に存在する。
これを CLASSPATH に設定すれば、解決する。
iReport-5.6.0.zipは、以下から入手する。
http://sourceforge.net/projects/ireport/
NGだった itext-asian-5.2.0.jar と、iTextAsian.jar を比べると、、、
フォントファイルが格納されてるPATHが、違っている。
itext-asian-5.2.0.jar は、、
/com/itextpdf/text/pdf/fonts/cmap/
iTextAsian.jar は、、
/com/lowagie/text/pdf/fonts/
という PATH にフォントファイルが存在する。
iTextAsian.jar の方が古い。
iTextAsian.jar を CLASSPATH のに設定するのではなく、Maven依存関係で設定したいので、
mvn install:install-file -Dfile=d:/work/iTextAsian.jar -DgroupId=com.lowagie -DartifactId=iTextAsian -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>iTextAsian</artifactId>
<version>1.0</version>
</dependency>
無事、日本語が出力された。
=============================================
調査していた時、以下の方法を見つけたがうまくいかなかった。
JRProperties.setProperty("net.sf.jasperreports.default.pdf.font.name", "HeiseiKakuGo-W5");
JRProperties.setProperty("net.sf.jasperreports.default.pdf.encoding", "UniJIS-UCS2-H");
JRProperties.setProperty("net.sf.jasperreports.default.pdf.embedded", "true");
itext-asian-5.2.0.jar の中のパッケージツリーを、iTextAsian.jar にすれば、この方法でいけるのだろうか?
そんなことしたくないし、フォントだけしかないから、iTextAsian.jar を使えば良いだろう。