- PR -

JasperReport/iText&Linuxで日本語pdfを生成するには?

1
投稿者投稿内容
がみさん
会議室デビュー日: 2004/02/18
投稿数: 8
投稿日時: 2004-02-18 19:35
J2SDK 1.4.2_03
Tomcat 5.0.16
JasperReport 0.5.0
iText 1.02b
iTextAsian (ver不明。2003/07頃のもの)

という環境でweb上でのpdf生成を開発中です。
上記をWindowsXP上で動かし、日本語入りpdfが生成できることは確認できました。

で、この環境(というかwebアプリ)をそっくりそのままFedoraCore1上で(他のアプリは同一Ver)実行しましたが、下記エラーが表示され、pdfが生成できませんでした。

Fedora上で動かすにあたって、フォントの指定は「MS Pゴシック→東風ゴシック」などとLinux上に存在するものに変更しています(東風著作権問題は知っています。テスト用なのでご容赦ください)。
このフォントの指定は、Fedora上でiReportを起動してJasperReportのxmlファイルを開き、指定しました。このxmlファイルをFedora上でiReportを使って日本語pdf生成はできました。

1.なぜwebアプリなのにX11が呼ばれるのでしょうか?(Xサーバ経由でフォントを探しているのかな、と推測はしていますが・・・)
2.Fedora(ないしはLinux)上&JasperReport/iText/iTextAsianでフォントを指定する場合、気をつける点はありますでしょうか?
3.ずばり、解決策は?(Linuxの基礎ならともかく、XとAWTのからみとなると皆目見当が付きません)

どなたかヒントだけでもご教授ください。よろしくお願いします。

-----------以下エラーログ
java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:134)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:141)
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
dori.jasper.engine.fill.JRBaseFiller.<clinit>(JRBaseFiller.java:210)
dori.jasper.engine.fill.JRFiller.fillReport(JRFiller.java:110)
dori.jasper.engine.JasperFillManager.fillReport(JasperFillManager.java:219)
dori.jasper.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:140)
dori.jasper.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:108)
my.package.jasperreport.TbOrderReport.createOrderPdf(TbOrderReport.java:65)
(以下略)
-----------


ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-02-18 19:54
もしかして、ここらへんに該当しませんか?

サーバ上で画像を生成する時の問題

DefaultToolkitがとれない?



がみさん
会議室デビュー日: 2004/02/18
投稿数: 8
投稿日時: 2004-02-19 11:24
ちいにぃ様、ありがとうございます。
まさにそのリンク先でそのものずばり!!でした。

export CATALINA_OPTS='Djava.awt.headless=true'

で解決できました。

ちなみに、フォント指定はWin上で作った時の「MS Pゴシック」などのままでもpdf作成ができました。

大変助かりました。ありがとうございます!!
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-02-19 11:28
http://cvs.sourceforge.net/viewcvs.py/jasperreports/jasperreports/

JasperReportのCVSのソースコードを覗いてみると、dori.jasper.engine.fill.JRBaseFillerの初期化シーケンスの中で

java.awt.GraphicsEnvironment#getLocalGraphicsEnvironment()
java.awt.GraphicsEnvironment#getAvailableFontFamilyNames()

を実行し、フォント名リストをGraphicsEnvironment経由で取れる
かどうかチェックしている箇所があるようです。
何のためにそのようなチェックしているのかは分かりませんが、AWT
へのアクセスは避けられそうにありませんね。
というわけで、ちいにぃさんのポインタ先が参考になりそうです。

#最新のソースコードをCVSから取得して、
#dori.jasper.engine.util.JRGraphEnvInitializerクラスに
#ある上記の処理をコメントアウトしてしまってリビルドすると、
#動いてしまったりするかも^^;
1

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