- PR -

JasperReport(iReport)でBoldやItalicがPDFへ反映されない(再投稿)

1
投稿者投稿内容
Yupa
会議室デビュー日: 2004/12/02
投稿数: 11
投稿日時: 2007-06-15 13:57
#「リッチクライアント & 帳票 会議室」で質問したものの再投稿になります。

iReport(JasperReport)を使って帳票を作成しております。
テキストの部分にプロパティで太字(Bold)や斜字(Italic)の指定をすると、JRプレビュー、Excel、RTF形式では問題なく反映されるようなのですが、PDF出力をすると太字や斜字が無視されてしまいます。

OpenOfficeから出力したPDFは問題なく太字や斜字が反映されるので、AdobeReader側には問題はないと思います。

同じような症状を経験された方いらっしゃいませんか?また、対策がわかりましたらご教示願います。

実施環境は以下のとおりです。
OS:WindowsXP Professional SP2
Java version "1.6.0_01"
iReport ver.1.3.3
JasperReport ver.1.3.3
Adobe Reader 7.0

上記の現象は欧文PDFフォントでは発生しません。
(もちろん、欧文フォントでは日本語表示できないわけですが。)
欧文PDFフォントの場合はPDFでもBoldやItalicは反映されます。

欧米フォントの場合ですが、Boldにすると、PDFフォント名がHelveticaの場合Helvetica-Boldに自動的に切り替わっているようです。

日本語フォントではこれが切り替わりません。
#そのようなフォントがないためと思います。

この辺が原因なのかとも思うのですけど、対処方法がわかりません。

アドバイスをお願いいたします。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-06-15 15:54
リッチクライアント & 帳票 会議室 側に、こっちに移動した旨の
書き込みをして閉じましょうね。(お約束)
Yupa
会議室デビュー日: 2004/12/02
投稿数: 11
投稿日時: 2007-06-15 18:04
引用:

小僧さんの書き込み (2007-06-15 15:54) より:
リッチクライアント & 帳票 会議室 側に、こっちに移動した旨の
書き込みをして閉じましょうね。(お約束)



失礼いたしました。
移動した旨、元の会議室側に書き込みをしておきました。

ライブラリとしては既にJasperReportsを利用されているJavaプログラマも多いと思います。情報をお持ちの方、よろしくお願いいたします。

JasperReportsのPDF出力部分についてはiText(iText.jar + iTextAsian.jar)を使ってますので、そちらでPDFフォントでBoldやItalicを使った例でも助かります。

もしかしたらJasperReportsでのPDFフォントの扱いに問題があるのでは、と疑い始めており、ソースを見始めています。

ただ、Javaはまだ知見が不十分で、インターネットで情報を追いながら見ている状態です。

現在参考にさせていただいてるのが、以下のURLです。
http://kamakura.cool.ne.jp/oppama/jaco/itext-pdf.html
http://blog.antenna.co.jp/PDFTool/archives/2006/03/11/
http://blog.antenna.co.jp/PDFTool/archives/2006/02/19/

iTextでのPDF出力におけるフォントおよびフォントのスタイルについての情報のまとめてあるWebサイト、書籍などがございましたらご教示願えますか?

よろしくお願いいたします。
Yupa
会議室デビュー日: 2004/12/02
投稿数: 11
投稿日時: 2007-06-17 03:34
iTextでのフォントやスタイルの指定の仕方を調べるべく、下記のURLを参照しました。
http://kamakura.cool.ne.jp/oppama/jaco/itext-pdf.html

テスト用に下記URLの3章のサンプルを使用して試しております。
http://www.ee.e-mansion.com/~egami/iText/

この
--
Font font = new Font(bf, 12);
--
の部分を
--
Font font = new Font(bf, 12, Font.BOLD);
--
といった風に変更して試しているのですが、出力したPDFを見たところ、反映されてないようです。(欧文フォントも試したのですが、だめでした。)

どこに問題があるのか、わかりません。

この辺のiTextの使用について、参考になる文献やサイトなどがありましたあらご教示願えないでしょうか?
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2007-06-17 12:39
私はFOPしか使ったことがないので的ハズレかもしれませんが
少し気になる点があるので確認です。
コード:
Font font = new Font(bf, 12, Font.BOLD);  


ここでのbf(BaseFont)はどれを指定していますか?
コード:
BaseFont bf = BaseFont.createFont("HeiseiMin-W3", "UniJIS-UCS2-HW-H",false);


これですか?
Yupa
会議室デビュー日: 2004/12/02
投稿数: 11
投稿日時: 2007-06-17 22:22
kumaさん、

引用:

kumaさんの書き込み (2007-06-17 12:39) より:
私はFOPしか使ったことがないので的ハズレかもしれませんが
少し気になる点があるので確認です。
コード:
Font font = new Font(bf, 12, Font.BOLD);  


ここでのbf(BaseFont)はどれを指定していますか?
コード:
BaseFont bf = BaseFont.createFont("HeiseiMin-W3", "UniJIS-UCS2-HW-H",false);


これですか?



これです。

itext.jarにはフォント「HeiseiMin-W3」および「UniJIS-UCS2-HW-H」は含まれていないのですが、日本語出力の際にはiTextAsian.jarを一緒に使います。こちらのこのフォントが含まれています。(この場合、HeiseiMin-W3がフォントで、UniJIS-UCS2-HW-Hはエンコーディングですね。)

ところで、iTextで日本語の方のBold、Italicはできるようになりました。(どこが悪かったのかわかりませんが・・・。)

今度はJasperReports内部でどうやっているかという点です。
もうここまで来ると自分でソース追うしかないかな、って思っています。

JasperReportsでレポート作成された方で、こういったフォントのスタイルをいじる方っていないのでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)