TCPDF в два раза медленнее, чем FPDF с тем же кодом - PullRequest
6 голосов
/ 18 февраля 2010

В настоящее время я использую FPDF для создания довольно сложных отчетов и пытаюсь перейти на TCPDF, но обнаружил, что мой код, выполняемый через TCPDF, работает примерно вдвое медленнее. Поскольку мои PDF-файлы уже генерируются за минуту, я не могу позволить себе такое замедление, но я действительно хотел бы воспользоваться некоторыми функциями TCPDF (такими как создание закладок).

Если у кого-то есть информация по этой проблеме, я бы очень признателен - либо за то, что вы сделали, чтобы сделать TCPDF быстрее, либо просто за подтверждение того, что он работает медленнее, чем FPDF, поэтому я могу забыть об этом и просто придерживаться FPDF. 1003 *

Ответы [ 4 ]

4 голосов
/ 18 сентября 2010

Вот сладкое решение, бреет 2 минуты для меня. PDF создаются за 3 секунды!

http://www.bitrealm.net/2010/08/tcpdf-is-slow-here-is-the-solution/

Заменить

$font = $this->_getTrueTypeFontSubset($font, $subsetchars);

с этим:

/ Alcal: $font2cache modification
// This modification creates utf-8 fonts only the first time,
// after that it uses cache file which dramatically reduces execution time
if (!file_exists($fontfile.'.cached')){
// calculate $font first time
$subsetchars = array_fill(0, 512, true); // fill subset for all chars 0-512
$font = $this->_getTrueTypeFontSubset($font, $subsetchars); // this part is actually slow!
// and then save $font to file for further use
$fp=fopen($fontfile.'.cached','w');
$flat_array = serialize($font); //
fwrite($fp,$flat_array);
fclose($fp);
}
else {
// cache file exist, load file
$fp=fopen($fontfile.'.cached','r');
$flat_array = fread($fp,filesize($fontfile.'.cached'));
fclose($fp);
$font = unserialize($flat_array);
}
2 голосов
/ 15 июня 2011

http://www.tcpdf.org/performances.php

По умолчанию TCPDF включает поднабор шрифтов, чтобы уменьшить размер встроенных шрифтов Unicode TTF, этот процесс, который очень медленный и требует много памяти, можно отключить с помощью метода setFontSubsetting (false);

Это было реальное решение для меня.

1 голос
/ 23 апреля 2011

Начиная с версии 5.9.067 производительность TCPDF была значительно улучшена. Кажется, что каждый новый выпуск работает лучше. Кроме того, вы можете настроить его на повышение производительности, как описано в http://www.tcpdf.org/performances.php

0 голосов
/ 06 августа 2010

Производительность TCPDF можно настроить, отключив неиспользуемые функции в файле конфигурации и отключив медленные функции, такие как поднабор шрифтов. Используя только основные шрифты (такие как Helvetica, Times, ...) в режиме, отличном от UTF8, вы можете получить хорошие результаты. Кроме того, вы можете установить XCache на свой сервер, чтобы повысить производительность PHP. Посетите официальный http://www.tcpdf.org веб-сайт и форумы для получения дополнительной информации.

...