2011-12-14 16 views
3

の仕事、そして私のWindowsラップトップ上で、この方法でPDFを作成することは正常に動作しません:SVG世代は、1台のサーバー上に

http://www.databasesandlife.com/svg-to-pdf/

しかし、私はこのエラーを取得し、他のサーバー上:

org.apache.batik.transcoder.TranscoderException: Error while setting up PDFDocumentGraphics2D 
Enclosed Exception: 
Error while setting up fonts 
    at org.apache.fop.svg.PDFTranscoder.transcode(PDFTranscoder.java:189) 
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source) 
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source) 
    at org.apache.batik.apps.rasterizer.SVGConverter.transcode(Unknown Source) 
    at org.apache.batik.apps.rasterizer.SVGConverter.execute(Unknown Source) 

私はグーグルで何時間も探していますが、無駄です。私に何ができる?

は、私は以下のパッケージをインストールしようとしたが、彼らは助けにはならなかった。

sudo apt-get install gsfonts gsfonts-x11 gsfonts-other batik \ 
    libbatik-java libxmlgraphics-commons-java \ 
    libxmlgraphics-commons-java fop sun-java6-fonts 

私の状況は次のとおりです。

  • のDebian 6.0.3
  • のSun Javaバージョン "1.6.0_26"
  • JAR:avalon-framework-4.2.0.jar batik-all-1.7.jar commons-io-1.3.1.jar commons-logging-1.0.4.jar fop-0.95.jar log4j-1.2.15.jar xml-apis-ext.jar xmlgraphics-commons-1.3.1.jar

答えて

2

この問題を解決するためのアプローチは、私がTRACEにレベルを上げlog4j.propertiesです。そこ

私は、私が以前に見たのだTranscoderException前に余分なログを見ました:

2012-02-28 11:51:24,863 DEBUG: org.apache.fop.fonts.FontCache: 
    Writing font cache to /usr/share/jetty/.fop/fop-fonts.cache 
org.apache.batik.transcoder.TranscoderException: 
    Error while setting up PDFDocumentGraphics2D 

Horrayログの! (そして、プログラムが何をしようとしているかについてのログを書いておきましょう。一度実行しただけではなく、操作が失敗した場合、失敗したときに何をしようとしているのか分かります)。

Debianでは、 Jetty Webサーバーはユーザーjettyの下で実行され、そのホームディレクトリは/usr/share/jetty/です。ただし、jettyユーザーには、自分のホームディレクトリへの書き込みアクセス権がないため、この~/.fopディレクトリを作成できませんでした。

[email protected]:~$ grep jetty /etc/passwd 
jetty:x:107:111::/usr/share/jetty:/bin/false 
[email protected]:~$ ls -ld /usr/share/jetty 
drwxr-xr-x 7 root root 4096 Feb 28 11:52 /usr/share/jetty/ 

私は突堤はそれを書くことができるように、これは仕様によるもの、またはバグが、このディレクトリを作成するかどうかわからない...

sudo mkdir -p -m 0777 /usr/share/jetty/.fop 

は...問題を解決しました。

3

このような一時ファイルをDebianパッケージのjetty構造内に作成することは、本当に良い考えではありません。アップデートの場合、あなたは問題に遭遇するかもしれません。このようなキャッシュディレクトリは、たとえば/var/tmpのように/varに配置する必要があります。

documentationによれば、FOPは障害発生時に一時ディレクトリを使用することになっています。おそらく、あなたの発見はバグレポートに値するでしょう。

それが修正されるまで、あなたがuse-cacheでキャッシュを無効にcache-file optionを設定する必要がありますが、別の方法が、おそらくパフォーマンスの影響です。

関連する問題