【问题标题】:generation slow pdf (yii framework)生成慢速pdf(yii框架)
【发布时间】:2011-12-26 09:16:32
【问题描述】:

我查看了类似的问题,但没有找到解决问题的方法

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

  • 列表项
  • yii 框架(Zend Engine v2.3.0)
  • php 5.3.8
  • 服务器操作系统 Fedora15
  • java 1.6.0_22
  • Apache Batik 1.7 java 库
  • libpng 2:1.2

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

PDF 生成大约需要 ~10 秒 完成大约 2 页,其中包括 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。

如果你需要一些额外的信息 - 告诉我,我给你。

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

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

【问题讨论】:

  • 你应该更多地分析它,看看哪个是缓慢的过程,如果是图像转换或pdf创建;您可能还想用更少的数据测试这两个过程,看看问题是否存在。
  • 我发现导出功能有问题:我有 2 个图表,它们生成的速度非常慢,大约 3 秒

标签: php svg pdf-generation yii libpng


【解决方案1】:

尝试使用http://www.princexml.com/ - 它工作得非常快而且非常简单。

【讨论】:

    猜你喜欢
    • 2015-02-20
    • 2010-11-07
    • 2014-05-17
    • 2023-03-20
    • 1970-01-01
    • 2012-05-11
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多