Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用相同代码时,TCPDF的速度是FPDF的两倍_Php_Pdf_Fpdf_Tcpdf - Fatal编程技术网

Php 使用相同代码时,TCPDF的速度是FPDF的两倍

Php 使用相同代码时,TCPDF的速度是FPDF的两倍,php,pdf,fpdf,tcpdf,Php,Pdf,Fpdf,Tcpdf,我目前使用FPDF创建一些相当复杂的报告,并试图升级到TCPDF,但我发现我在TCPDF中运行的相同代码的速度大约是TCPDF的两倍。因为我的PDF已经需要一分钟的时间来生成,所以我实在承受不起这种减速,但我真的很想利用一些TCPDF功能(比如创建书签) 如果有人知道关于这个问题的一些信息,我会非常感激——无论是您为使TCPDF更快所做的事情,还是确认其运行速度比FPDF慢,所以我可以忘记它,只使用FPDF。TCPDF性能可以通过禁用配置文件中未使用的功能和关闭字体子集等慢速功能来调整。 在非U

我目前使用FPDF创建一些相当复杂的报告,并试图升级到TCPDF,但我发现我在TCPDF中运行的相同代码的速度大约是TCPDF的两倍。因为我的PDF已经需要一分钟的时间来生成,所以我实在承受不起这种减速,但我真的很想利用一些TCPDF功能(比如创建书签)


如果有人知道关于这个问题的一些信息,我会非常感激——无论是您为使TCPDF更快所做的事情,还是确认其运行速度比FPDF慢,所以我可以忘记它,只使用FPDF。

TCPDF性能可以通过禁用配置文件中未使用的功能和关闭字体子集等慢速功能来调整。 在非UTF8模式下仅使用核心字体(如Helvetica、Times等)可以获得良好的性能。 此外,您可以在服务器上安装XCache以提高PHP性能。
查看官方网站和论坛了解更多信息。

这是一个很好的解决方案,我只需刮2分钟。PDF在3秒内创建

替换

$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);
}

自5.9.067版以来,TCPDF性能得到了极大的提高。 每一个新版本似乎都表现得更好。 此外,您还可以将其设置为提高性能,如

默认情况下,TCPDF启用字体子集设置以减小嵌入式Unicode TTF字体的大小,此过程非常缓慢且需要大量内存,可以使用setFontSubseting(false)方法关闭

这才是我真正的解决办法