目次
- (1) JasperReports とはなんぞ ~ 帳票に埋め込むデータを準備する
- (2) 帳票レイアウトを作成する
- (3) Java プログラムから PDF を出力する
- (4) 日本語が出力できるようにする ~PDF にフォントを埋め込まない編~
- (5) 日本語が出力できるようにする ~PDF にフォントを埋め込む編~
- (6) ★おまけ★ スタイルを一括指定する
日本語が出力できるようにする ~PDF にフォントを埋め込まない編~
PDF にフォントを埋め込まない場合のメリットは、PDF のファイル サイズが小さくなることでしょう。しかし、デメリットとして、受け取り側の環境に依存することになり、場合によっては文字化けが発生したり、作成者の意図とは異なる表示になる可能性があります。
■帳票レイアウトに、日本語フォントを適用
個々の要素 (Text Field や Static Text など) に対し日本語フォントを適用するには、帳票レイアウトを設計モードで表示します。対象の要素を選択し、プロパティの[Advanced]設定で、以下の項目を設定します。
プロパティ名 | 意味 | プロパティ値 | ||||||
---|---|---|---|---|---|---|---|---|
PDF – PDF Embedded | フォントを埋め込むかどうか | false (フォントを埋め込まない) |
||||||
PDF – PDF Encoding | エンコーディング | UniJIS-UCS2-H (Japanese) (Adobe-Japan1 の Unicode エンコーディング) |
||||||
PDF – PDF FontName | フォント名 | 日本語フォントについては、以下の 2 種類が指定できます。
|
■日本語を扱うために必要な JAR ファイルをダウンロード・配置
以下をダウンロードします。
- iText の extrajars (xtrajars-x.x.zip)
解凍したフォルダー内の「itext-asian.jar」を、Tomcat プロジェクトの lib フォルダーに配置します。lib フォルダーの中身は、こんな感じ。
■出力結果をブラウザーで確認
ブラウザーでサーブレットにアクセスして、PDF の出力結果を確認します。
日本語がきちんと表示されています。いい感じです。
PDF ファイルのプロパティにて、フォントが設定されているかどうか、確認してみました。フォント名は正しく設定されていますが、実際のフォントの欄、「HeiseiKakuGo-W5」が「KozGoPr6N-Medium」に、「HeiseiMin-W3」が「KozMinPr6N-Regular」になっている(゜д゜)
Adobe Reader のフォント フォルダー内を見てみると、確かに「HeiseiKakuGo-W5」も「HeiseiMin-W3」も無い…。これはまぁ、しゃーないね。
■上手くいかない、その時は…
実行時エラーが出るなど、日本語の出力が上手くいかない場合は、以下を確認してみてください。
- itext-asian.jar へのクラスパスが通っているか。
- iTextAsian.jar ではなく、itext-asian.jar を使用しているか。(jasperReports のバージョンにもよると思われますが、少なくとも私が試したバージョン 6 では、iTextAsian.jar を使用すると例外が発生しました。jar ファイルを解凍して中身を確認してみると、iText 関連のパッケージ名が “com\itextpdf\” で始まるのに対し、iTextAsian.jar は “com\lowagie\” で始まっていました。バージョンアップされた際に、パッケージ名が変更になったのかもしれません。)