- - PR -
JasperReport/iText&Linuxで日本語pdfを生成するには?
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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) (以下略) ----------- |
|
投稿日時: 2004-02-18 19:54
もしかして、ここらへんに該当しませんか?
サーバ上で画像を生成する時の問題 DefaultToolkitがとれない? |
|
投稿日時: 2004-02-19 11:24
ちいにぃ様、ありがとうございます。
まさにそのリンク先でそのものずばり!!でした。 export CATALINA_OPTS='Djava.awt.headless=true' で解決できました。 ちなみに、フォント指定はWin上で作った時の「MS Pゴシック」などのままでもpdf作成ができました。 大変助かりました。ありがとうございます!! |
|
投稿日時: 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
