2010-02-17 23 views
5

Actualmente uso FPDF para crear informes bastante complicados y estoy tratando de actualizar a TCPDF, pero he descubierto que mi mismo código corriendo a través de TCPDF es casi el doble de lento. Debido a que mis archivos PDF ya tardan un minuto en generarse, realmente no me puedo permitir esta desaceleración, pero me gustaría aprovechar algunas características de TCPDF (como crear marcadores).TCPDF dos veces más lento que FPDF con el mismo código

Si alguien tiene algo de información sobre este problema, realmente lo agradecería, ya sea para acelerar el TCPDF o simplemente para confirmar que funciona más lento que FPDF, así que puedo olvidarme de eso y limitarme al FPDF.

Respuesta

0

Las prestaciones de TCPDF pueden ajustarse deshabilitando las funciones no utilizadas en el archivo de configuración y desactivando las funciones lentas como el subconjunto de fuentes. Utilizando solo fuentes de núcleo (como Helvetica, Times, ...) en modo no UTF8 puede obtener buenos resultados. Además, puede instalar XCache en su servidor para aumentar el rendimiento de PHP. Consulte el sitio web y los foros oficiales de http://www.tcpdf.org para obtener más información.

4

Aquí hay una solución dulce, se afeita 2 minutos para mí. ¡Los archivos PDF se crean en 3 segundos!

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

Reemplazar

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

con esto:

/ 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

Desde la versión 5.9.067 actuaciones TCPDF se mejoraron drásticamente. Cada nueva versión parece funcionar mejor. Además se puede configurar para impulsar actuaciones como se explica en http://www.tcpdf.org/performances.php

2

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

Por TCPDF predeterminado permite subconjunto de fuentes para reducir el tamaño de las fuentes Unicode TTF incrustados, este proceso, que es muy lento y requiere mucha memoria, se puede desactivar usando el método setFontSubsetting (false);

Esta fue la verdadera solución para mí.

Cuestiones relacionadas