【发布时间】: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