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

4 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;
Run Code Online (Sandbox Code Playgroud)

跟进:(调整性能)

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

2)编码$ pdf-> setFontSubsetting(false); // true到false

3)调试显示,跟随整个时间

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

小智 5

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

无论如何,我提供以下代码,帮助我转换HTML - > 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');
Run Code Online (Sandbox Code Playgroud)

此代码提供了作为可下载文件输出的PDF,MPDF文档提供了许多其他示例以满足您的需求.