我目前使用FPDF创建一些相当复杂的报告,并尝试升级到TCPDF,但我发现通过TCPDF运行的相同代码大约是两倍慢。因为我的PDF已经花了一分钟才能生成,所以我无法承受这种减速,但我真的想利用一些TCPDF功能(比如创建书签)。
如果有人有关于这个问题的一些信息,我真的很感激 - 无论你做了什么使TCPDF更快,或者只是确认它比FPDF运行得慢,所以我可以忘掉它并坚持使用FPDF。 / p>
答案 0 :(得分:4)
这是一个甜蜜的解决方案,为我刮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);
}
答案 1 :(得分:2)
http://www.tcpdf.org/performances.php
默认情况下,TCPDF启用字体子集以减小嵌入式Unicode TTF字体的大小,这个过程非常慢且需要大量内存,可以使用setFontSubsetting(false)方法关闭;
这对我来说是真正的解决方案。
答案 2 :(得分:1)
自版本5.9.067以来,TCPDF的性能得到了极大的提升。 每个新版本似乎表现更好。 此外,您可以将其设置为提升效果,如http://www.tcpdf.org/performances.php
中所述答案 3 :(得分:0)
可以通过禁用配置文件中未使用的功能来调整TCPDF性能,并关闭字体子集等慢速功能。 在非UTF8模式下仅使用核心字体(如Helvetica,Times,...),您可以获得良好的性能。 此外,您可以在服务器上安装XCache以提高PHP性能。 查看官方http://www.tcpdf.org网站和论坛以获取更多信息。