медленное поколение pdf (yii framework) - PullRequest
1 голос
/ 10 ноября 2011

Я рассмотрел похожие вопросы, но не нашел решения для моей проблемы

Среда нашего веб-проекта с использованием:

  • Элемент списка
  • yii framework (Zend Engine v2.3.0)
  • php 5.3.8
  • сервер os Fedora15
  • Java 1.6.0_22
  • Apache Batik 1.7 java lib
  • libpng 2: 1.2

Наш проект генерирует динамически PDF-документы (используя класс Zend Pdf).

Генерация PDF занимает arout ~ 10 секунд для завершения примерно 2 страниц , которые включают в себя 2 png-изображения (графики, отправляющие POST-данные в формате svg и java конвертировали его (svg) ) в изображение png; на веб-диаграммах, созданных с помощью jchar-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);
}

преобразование SVG в PNG с Java:

$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 голосов
/ 11 ноября 2011

Попробуйте использовать http://www.princexml.com/ - это работает очень быстро и очень просто.

...