生成慢速pdf(yii框架)

时间:2011-11-10 17:22:10

标签: php svg pdf-generation yii libpng

我回顾了类似的问题,但未找到解决我问题的方法

我们的网络项目环境使用:

  • 列表项
  • yii framework(Zend Engine v2.3.0)
  • php 5.3.8
  • server os Fedora15
  • java 1.6.0_22
  • Apache Batik 1.7 java lib
  • libpng 2:1.2

我们的项目生成dynamicaly pdf文档(使用Zend Pdf类)。

PDF生成需要 ~10秒来完成约 2页,其中包括2个png-images(以svg格式发送POST数据的图表和java转换他(svg)到png图像;在用highcharts js-lib生成的网页图表上,到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。

如果您需要一些额外的信息 - 请告诉我,我会把它给你。

有人可以帮助我吗?我真的不知道该怎么做,我已经尝试过我所知道的一切。

非常感谢您的任何帮助或建议!

1 个答案:

答案 0 :(得分:0)

尝试使用http://www.princexml.com/ - 它的工作速度非常快,非常简单。