加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用TCPDF创建大型PDF的最有效方法是什么?

发布时间:2020-12-13 17:39:58 所属栏目:PHP教程 来源:网络整理
导读:我正在努力通过使用TCPDF实现报告生成解决方案.我的一些报告很小(2-3页),但用户可以选择一次选择多个报告,并请求所有报告. 目前,我生成一个包含所有报告的PDF,每个报告从一个新页面开始,并使用页面分组,以便为??每个报告重新开始页面编号.当它工作时,它工作
我正在努力通过使用TCPDF实现报告生成解决方案.我的一些报告很小(2-3页),但用户可以选择一次选择多个报告,并请求所有报告.

目前,我生成一个包含所有报告的PDF,每个报告从一个新页面开始,并使用页面分组,以便为??每个报告重新开始页面编号.当它工作时,它工作得很好,但是在我选择了太多报告之后,代码会生成,我最终会得到一个空的PDF.

更新:我应该提到创建单个PDF是客户端的要求.他们希望拥有PDF目录,以便在选择了多个报告时在单个PDF中轻松切换报告.

我的问题是:

>生成此PDF的最有效方法是什么,而不用空白PDF?我似乎无法找到TCPDF可以处理的大小是否有限制.
>我应该在PHP中使用ob_start()还是正在构建一个大字符串,因为我做得很好?
>我的报告最初是HTML,所以我发送的是TCPDF.但是,如果我使用其他方法输出信息(例如Cell,MultiCell等),TCPDF的性能会更好吗?

这是我输出PDF的代码片段.根据库中包含的相关TCPDF示例设置$pdf对象:

foreach ($students_info as $student_info) {
    $info = $student_info->fetch_object();  // get query result object

    // put in the student information
    $pdf->set_student_info($info->lastName,$info->firstName,$info->rank,$info->idNum);

    $pdf->startPageGroup(); // start a page group to handle paging for multiple students
    $pdf->AddPage();        // add a page

    $html = "<style>";
    $html .= file_get_contents(/*some style sheet*/);
    $html .= file_get_contents(/*some other style sheet*/);
    $html .= "</style>";

    $html .= start_report_div($i);
    $html .= '<table class="report_table">'.                    
             '<tbody>'.
             '<tr><td>';
    $html .= display_report_title($report);
    $html .= display_student_info($db,$info);
    $html .= display_academic_comments_body($db,$info->studentID,$info->sessionID);
    $html .= display_signature_block($report);
    $html .= '</td></tr>'.
             '</tbody>'.                    
             '</table>';
    $html .= end_report_div();

    $pdf->writeHTML($html,// the content
            true,// put a newline after text
            false,// paint background,false = transparent
            true,// reset last cell height
            false,// add left padding
            ''                 // align
    );
    $html = '';       // reset for next student
    $pdf->lastPage(); // pointer to last page in case we are doing more than one student
}

解决方法

我对大文件和TCPDF也有麻烦.我从TCPDF切换到mPDF.该项目基于FPDF和HTML2PDF,并且通过HTML解析更快.

例如TCPDF花了大约70到80秒的文章详细概述(150页有图片,链接和一些东西).

刚刚用mPDF类和函数替换的相同HTML代码和相同的PHP脚本只需要6到8秒就可以创建相同的PDF.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读