1

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

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

  • 项目清单
  • 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 生成的网络图表上,到 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 回答