1

同様の質問を確認しましたが、問題の解決策が見つかりませんでした

以下を使用したWebプロジェクトの環境:

  • リスト項目
  • yii フレームワーク (Zend エンジン v2.3.0)
  • PHP 5.3.8
  • サーバー OS Fedora15
  • ジャバ 1.6.0_22
  • Apache Batik 1.7 Java ライブラリ
  • libpng 2:1.2

私たちのプロジェクトは動的にPDFドキュメントを生成します(Zend Pdfクラスを使用)。

PDF 生成は、約2 ページで完了するまでに約10 秒かかります。これには、2 つの png 画像 (svg 形式で POST データを送信するチャートと、Java で彼 (svg) を png 画像に変換したチャート) が含まれます。highcharts js-lib で生成された Web チャートでは、 png に)。

生成プロセスを高速化する必要があります。

コードの一部:

public function actionQuery()
{
     ...
     $xxExporter->generatePdf($request, $someAdditionalData);
     ...
     $xxExporter->httpOutputFile();
     ...
     Yii::app()->end();
}

public function generatePdf(CHttpRequest $request, array $someAdditionalData)
{
    initRequest($request, $someAdditionalData);
    ...
    ...attachItemToPdf..
    ...
    setMetaData
    ...
}

public function httpOutputFile()
{
    $this->pdf->save($filename);

    header("Content-Disposition: attachment; filename=\"{$this->filename}.pdf\"");
    header("Content-type: application/pdf");
    header("Content-length: " . filesize($filename));

    echo file_get_contents($filename);
    unlink($filename);
}

javaでsvgをpngに変換する:

$type = "-m {$this->fileType}";
$width = !empty($this->fileExportWidth) ? "-w {$this->fileExportWidth}" : '';
$outputFile = "-d {$this->fileExportTempName}";
$inputFile = $this->fileTempName;

$errorString = exec("{$this->pathJava} -jar {$this->pathBatik} {$type} {$outputFile} {$indexed} {$width} {$inputFile}", $output, $return_var);

明日、いくつかの jpg-lib をサーバーにインストールして、プロジェクトで png を jpg に置き換えてみます。

追加情報が必要な場合はお知らせください。

誰かが私を助けることができますか?これを行う方法が本当にわかりません。知っていることはすべて試しました。

助けや提案をありがとうございました!!

4

1 に答える 1

0

http://www.princexml.com/を使用してみてください。非常に高速に動作し、非常に簡単です。

于 2011-11-11T08:18:14.263 に答える