我有大量数据需要处理,并使用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/

10-13 02:06