2010-02-17 15 views
5

Obecnie używam FPDF do tworzenia dość skomplikowanych raportów i próbuję uaktualnić do TCPDF, ale odkryłem, że mój kod uruchamiany przez TCPDF jest około dwa razy wolniejszy. Ponieważ moje pliki PDF zajmują już nawet minutę, nie mogę pozwolić sobie na spowolnienie, ale naprawdę chciałbym skorzystać z niektórych funkcji TCPDF (takich jak tworzenie zakładek).TCPDF dwa razy wolniej niż FPDF z tym samym kodem

Jeśli ktoś ma jakieś informacje na temat tego problemu, to byłbym bardzo wdzięczny - albo to, co uczyniłeś, aby uczynić TCPDF szybszym, albo po prostu potwierdzenie, że działa wolniej niż FPDF, więc mogę o tym zapomnieć i po prostu trzymać się FPDF.

Odpowiedz

0

Wydajności TCPDF można dostroić, wyłączając nieużywane funkcje w pliku konfiguracyjnym i wyłączając powolne funkcje, takie jak dzielenie czcionek. Używanie tylko podstawowych czcionek (takich jak Helvetica, Times, ...) w trybie innym niż UTF8 pozwala uzyskać dobre wyniki. Dodatkowo możesz zainstalować XCache na swoim serwerze, aby zwiększyć wydajność PHP. Aby uzyskać więcej informacji, sprawdź oficjalną stronę internetową i fora na stronie http://www.tcpdf.org.

4

Oto słodkie rozwiązanie, goli mnie 2 minuty. Pliki PDF są tworzone w 3 sekundy!

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

Wymień

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

z tym:

/ 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); 
} 
1

Od wersji 5.9.067 występy TCPDF były znacznie lepsze. Każda nowa wersja wydaje się działać lepiej. Dodatkowo można ustawić go w celu zwiększenia występy jak wyjaśniono w http://www.tcpdf.org/performances.php

2

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

Domyślnie TCPDF umożliwia podzbiorów czcionek, aby zmniejszyć rozmiar osadzonych czcionek TTF Unicode, to proces, który jest bardzo powolny i wymaga dużo pamięć, można wyłączyć za pomocą metody setFontSubsetting (false);

To było dla mnie prawdziwe rozwiązanie.

Powiązane problemy