JasperReportsで日本語を使う
次は日本語だね、って適当にやってみるとエラーが出る。
さっき作ったJasperReportsのサンプルコードのデータソースに日本語を与えてみようと挑戦。次の段階として当たり前だね。jrxmlをiReportで編集。Textのプロパティを見ていけばPDF FontとPDF Encodingという欄がある。HeiseiMin-W3・UniJIS-UCS2-Hにそれぞれ設定。PDFのフォント設定として普通の設定ですね。
次にJavaのコードの変更。コード中に適当に日本語のデータを埋め込む。よし、これで実行…、あれ?
次にJavaのコードの変更。コード中に適当に日本語のデータを埋め込む。よし、これで実行…、あれ?
net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName : HeiseiMin-W3
pdfEncoding : UniJIS-UCS2-H
isPdfEmbedded : false
at net.sf.jasperreports.engine.export.JRPdfExporter.getFont(JRPdfExporter.java:1465)
at net.sf.jasperreports.engine.export.JRPdfExporter.getChunk(JRPdfExporter.java:1368)
at net.sf.jasperreports.engine.export.JRPdfExporter.getPhrase(JRPdfExporter.java:1351)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportText(JRPdfExporter.java:1708)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:590)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:554)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:519)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:306)
at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:126)
at MapArrayDSReport.main(MapArrayDSReport.java:68)
というようなエラーが。調べてみるとiTextがデフォルトでCJKに対応してないからということが原因だった。iTextAsian.jarをダウンロードしてきてCLASSPATHに追加すると見事表示された。ここはまるので注意。
- http://www.lowagie.com/iText/faq.html#asianfonts
- http://itextpdf.sourceforge.net/ - 本当は上のFAQのリンクがあるんだけど、Not Foundなので直接こっちから

Debian QA
Facebook (taniguchi.takaki)
Twitter (@takaki_t)