TCPDF - 如何使打印更快?这是非常非常慢,1320记录花了40分钟

时间:2011-11-18 17:47:22

标签: php windows zend-framework zend-db tcpdf

使用Zend框架和TCPDF这需要40分钟来打印Test.pdf。我现在不知道如何将这种异常时间减少到正常状态?

set_time_limit(0);
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setLanguageArray($l);
$pdf->setFontSubsetting(true);
$pdf->SetFont('dejavusans', '', 8, '', true);
$pdf->AddPage();
/* Database mysql gives the records and it is wrapped with <table> */
$html = "<table>1310 records.... with some simple <tr><td></td></tr></table>";
$pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', $html, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true);
$pdf->Output('Test.pdf', 'I');
exit;

跟进:(调整效果)

1)php.ini: memory_limit = 512M max_execution_time = 0

2)编码  $ PDF-&GT; setFontSubsetting(假); // true到false

3)调试显示,花费了整个时间

$ pdf-&gt; writeHTMLCell($ w = 0,$ h = 0,$ x ='',$ y ='',$ html,$ border = 0,$ ln = 1,$ fill = 0, $ reseth = true,$ align ='',$ autopadding = true);

3 个答案:

答案 0 :(得分:6)

由于没有其他答案,我强烈建议您好好看看MPDF(GPL),因为它比TCPDF快得多。我在一台服务器上进行了操作,花了大约三分钟使用TCPDF将MPDF减少到几秒钟。我只假设某种格式的HTML - &gt; PDF在TCPDF中遇到了一些低效的功能。

无论如何,我提供以下代码,帮助我转换HTML - &gt; PDF。

$mpdf = new mPDF('c');
$mpdf->setDisplayMode('fullpage');
$stylesheet = file_get_contents('css/core.css');
$mpdf->WriteHTML($stylesheet,1);
$html = "<table>1310 records.... with some simple <tr><td></td></tr></table>";
$mpdf->WriteHTML($html); 
$mpdf->Output(standardize(ampersand('filename', false)) . '.pdf', 'D');

此代码提供PDF格式的可下载文件,MPDF文档提供了许多其他示例以满足您的需求。

答案 1 :(得分:1)

我们使用mpdf主要是因为我可以在没有安装的情况下“包含”它。 有一些小调整需要添加到php.ini,我认为是mbstring。

通过缩小我提供WriteHTML动词的HTML,我能够每分钟获得75页,每分钟最多100页。我们没有任何图形。

然后我使用ghostscript对每个接收它们的人进行排序和cat pdf(15页左右)。对于在一个目的地接收报告的50或60人,每个800-1000页的猫流程大约需要3分钟。

所有这些都放在一个大多数人坐在那里的盒子上。

答案 2 :(得分:0)

TCPDF性能下降的原因之一可能是从外部URL插入的图像。 DNS解析和文件下载需要时间并且会减慢PDF生成过程。