1

私はよく StackOverflow をチェックして、いつもとても助けてくれます :) だから、なぜこれについて助けを求めないのですか?

Web ベースのアプリケーションで PHP を使用しています。Apache FOP を使用して、事前にフォーマットされた FO ファイルから PDF を生成する必要があります。ATMこの目的でコマンドラインexec('fop...')を使用していますが、サーバーの OS を変更するときにいくつか問題があります。

PHP Java ブリッジを使用して Javaclass から FOP を直接呼び出すことができることを Web で見たことがありますが、試行錯誤した後、このHowTo/PHPJavaBridgeよりも優れたチュートリアルがあるかどうかを知りたいと思います。

PS : ブリッジがインストールされて動作し、FopWrapper.jar がビルドおよび設定されていますが、PHP から呼び出すと、「ClassNotFound」というエラーが発生します。いくつかのアイデア?

ありがとう。

4

4 に答える 4

0

当社では、すべての作業を行う単純な FOP サーバーを作成することで、お客様の問題を解決しました。ホストに接続するための PHP curl または他のすべての方法を使用して、FOP サーバーに接続できます。.fo ファイルのコンテンツをサーバーに送信し、生成された PDF を受け取ります。利点は、FOP サーバーが実行されているサーバーに依存しないことです。私たちが抱えていた唯一の問題は、単純な Java プログラムを Linux デーモンとして実行するのが容易ではないことです。おそらく Java サーブレット コンテナ (Tomcat 内) を使用してソフトウェアを実行できます。私たちの使用では、単一の Linux 'スクリーン' がその役割を果たします。

FOP サーバーを作成するには、オプションの設定に応じて、数時間かかります。ヘッダー情報と .fo ファイルのコンテンツを含む単一のプロトコルを実装できます。

于 2010-08-07T11:27:05.393 に答える
0

Java に関わりたくない場合は別の方法があります。ここに無料の FOP サーバーがあります。

FOP Serverは、Apache FOP を実行するために必要なすべてを含む単なるバンドルです。HTTP ポストを使用して PHP からサーバーを呼び出すことができます。そのページには例があります。

于 2011-10-23T13:15:15.143 に答える
0

共有ホスティングを使用している場合、これはおそらく悪い考えです (「サーバーの OS を変更するときにいくつかの問題があります」)。PHP/Java ブリッジは、ローカル ソケットを介して PHP アプリケーションと通信する Java EE アプリケーションです。Java EE のサポートは、共有ホスティング アカウントではあまり一般的ではありません。

ホストに JVM がインストールされている場合 (シェル アクセスを想定すると、これは "java -v" でテストできます)、次のようにします。

2 つのパラメーターを受け入れる単純な Java SE アプリケーションを作成します。

"java -jar MySimpleInterfaceToFOP.jar "/path/to/inputFile" "/path/to/outputFile" "

これを PHP の system() または exec() インターフェイス経由で実行し、random() または mktime() を使用してランダムなファイル名を取得します。

于 2010-06-29T15:12:15.193 に答える
0

最後に、このメーリング リストFop from PHP Javaで解決策を見つけたので、FOP 0.9x の最新リリース バージョンでうまく動作します。唯一の問題は、Tomcat が生成された pdf での作業を終了したときに、最後にロックされたままになり、サーバーを再起動しないと開く方法がないことです。

何か案は ?前にありがとう:)

編集: Javaで本当に初心者であることは私を助けませんでした。実際、問題は、 FileOutputStreamを開き、最後に閉じるのを忘れていたことです。これが誰かを助けることができるなら、ここで私がそれをした方法:

require_once("java/Java.inc");

$input      = 'D:/wamp/www/test/fo2pdf';
$output     = 'D:/wamp/www/test/fo2pdf';
$sourcefile = 'test.fo';
$destfile   = 'trys.pdf';

$pdffile    = new Java("java.io.FileOutputStream", $output . "\\" . $destfile);
$mimes      = new Java("org.apache.fop.apps.MimeConstants");
$fopfactory = new Java("org.apache.fop.apps.FopFactory");

$fopf       = $fopfactory->newInstance();
$fopf->setUserConfig( new Java("java.io.File", "D:/wamp/www/myvisitV3/outils/FOP/conf/fop.xconf") );
$userf      = $fopf->newFOUserAgent();
$fop        = $fopf->newFop($mimes->MIME_PDF, $userf, $pdffile);


$transformerclass   = new Java("javax.xml.transform.TransformerFactory");
$transformerfactory = $transformerclass->newInstance();
$transformerf       = $transformerfactory->newTransformer();

$src        = new Java("javax.xml.transform.stream.StreamSource", new Java("java.io.File", $input . "\\" . $sourcefile ));
$res        = new Java("javax.xml.transform.sax.SAXResult", $fop->getDefaultHandler());

$transformerf->transform($src, $res);
$pdffile->close();
于 2010-07-01T06:49:43.887 に答える