0

Batik ラスタライズ ライブラリを使用して、SVG から .png への変換を Yii アプリに追加しようとしています。現在、OSX 10.6.7、PHP 5.3.4、および Java 1.6.0_24 を実行している Mac でローカルに作業しています。

変換を処理する PHP スクリプトを実行すると、...

$output = shell_exec(java -jar batik/batik-rasterizer.jar -m image/png -d pdf_temp/file.png -w 800 pdf_temp/file.svg) 

Batik は (役に立たない) エラーで失敗します:

About to transcode 1 SVG file(s)
Converting file.svg to pdf_temp/file.png ...  file_1310581599.png

Error while converting SVG 

ただし、使用...

java -jar batik/batik-rasterizer.jar -m image/png -d pdf_temp/file.png -w 800 pdf_temp/file.svg

...ターミナルで処理し、.png ファイルを元の .svg とともに /pdf_temp/ ディレクトリに保存します

では、ターミナルが正常なときに Batik が失敗する原因となっている PHP/apache 環境の違いは何でしょうか?

編集:

何人かの同僚と話し合った結果、Java を root として実行する必要があるという事実が考えられます。これは、ターミナルから実行しますが、Web サーバー内では実行しません。

追加中...

2>&1 1> /dev/null

私のBatik shell_exec() コマンドには、次のエラーが表示されます:

Exception in thread "main" java.lang.InternalError: Can't connect to window server - not enough permissions.

Web サーバー環境で Java を root として実行する方法についてのアイデアはありますか? または、必要な機能を実行できるようにしますか?


4

2 に答える 2

0

現在、Batik と Yii も使用しています。出力とソース ファイルのパスを確認します。パス全体を提供しましたが、現在は機能しています。Yii はあなたのビューの場所に立っていないようです。代わりに、Yii の現在の場所はあなたのウェブルートです。私の場合、次のように修正しました。

    define ('BATIK_PATH', '/var/www/wattquotes/protected/views/calculator/reports/batik/batik-rasterizer.jar');
    $typeString = ' -m image/jpeg';
    $outfile = ' /var/www/wattquotes/protected/views/calculator/reports/batik/temp/pic.jpg';
    $width = ' -w 600';
    $tempName = ' /var/www/wattquotes/protected/views/calculator/reports/batik/temp/proposal.svg';
    $output = shell_exec("java -jar ". BATIK_PATH ." $typeString -d $outfile $width $tempName");

できます!

于 2011-12-13T22:36:59.507 に答える
0

-Djava.awt.headless=true

http://www.emcken.dk/weblog/archives/25-svg-rasterizer-with-batik.html

于 2011-12-11T11:51:19.337 に答える