我有大量数据需要处理,并使用Codeigniter将其添加为PDF表格。 PDF包含一些HTML元素,图像,图标,并且需要使用CSS进行大量对齐。
因此,为了实现此目标,我进行了一些搜索,然后检查了哪个PDF生成插件适合我。因此,而不是选择FPDF,TCPDF或HTMLTOPDF,mPDF等。我选择DOMPDF是因为它支持大多数CSS样式,并且也符合我的目的。
最初,它工作得很好,因为数据不是很多,而具有10-20页的PDF可以很好地生成。但是,随着数据的增加以及需要在PDF中放入约35-45页的内容,系统会超时。
因此,我更改了服务器设置,并设置为“ 4GB RAM with 1 CPU to 8GB RAM of 4 CPUs”。并且,将max_execution_time增加到90,将memory_limit增加到384M,但是DOMPDF仍无法呈现页面超过约35的大型PDF。
我已将横向模式设置为下载PDF而不是保存它。
下面是我的Codeigniter控制器中的PHP代码。
$this->load->library('pdf');
$teaminfo=$this->pdf_model->getTeamName($teamid);
$data=array();
if($teaminfo != false)
{
$teamname=$teaminfo->team_name;
$data['teamname']=$teamname;
$formateddate=date('F j, Y');
$data['teammeetingdate']=$formateddate;
//add code to get and pass the terms and replacement array
$termsList=$this->getTermsArray($teamid);
$data['searchterms']=$termsList['searchterms'];
$data['replacement']=$termsList['replacement'];
//get teammeeting roster
$data['rosterlist']=$this->getRostertable($teamid);
$personwisedata=$this->getteammemberData($teamid);
$data['personwiseData']=$personwisedata;
$kmresponse=$this->get_last_six_month_keymetrics_details_by_userid_without_owner($teamid);
$data['noownerkmdata']=$kmresponse;
//set pdf title
$teamnametitle='My PDF Notes - '.$teamname.' '.date("m.d.Y");
$pdftitle=$teamnametitle.'.pdf';
$this->pdf->set_paper('a4', 'landscape');
$this->pdf->set_option( 'enable_font_subsetting' , true );
$this->pdf->load_view('backend/Pdf/teammeeting_pdf', $data);
$this->pdf->render();
$this->pdf->stream($pdftitle,array("Attachment" => 0));
}
对于小尺寸的PDF,它可以正常工作。但是,当需要生成较长的PDF时,执行就会停止,并在页面上显示错误“内部服务器错误”。
当我只是通过退出在浏览器上打印输出时,它在一分钟内即可工作,但是当我发送该HTML以在PDF上呈现并流式传输时,系统将停止执行。
我试图通过htaccess和ini_set设置max_execution_time和memory_limit,但是它没有帮助我。
希望有人能帮助我。
最佳答案
Dompdf非常慢,请使用tcpdf
https://tcpdf.org/examples/
很简单的,
关于php - PHP,Codeigniter,Dompdf:HTML可以很好地生成,但是在渲染PDF时执行超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42435826/