我正在通过使用TCPDF实现报表生成解决方案。我的一些报告很小(2-3页),但用户可以选择一次选择多个报告,并请求全部报告。使用TCPDF创建大型PDF的最有效方法是什么?
目前,我生成一个包含所有报告的PDF,每个报告都在新页面上开始,并使用页面分组,因此每个报告都重新启动页码。当它工作的时候,它工作的很好,但是当我选择了太多的报告之后,代码就消失了,最终我得到了一个空的PDF。
更新:我应该提到,创建单个PDF是客户的要求。他们希望有一个PDF目录表,当他们选择了许多报告时,可以在单个PDF中的报告之间轻松切换。
我的问题是:
什么是产生这个PDF,而不与空白的PDF结束了最有效的方法是什么?我似乎无法找到TCPDF可以处理的大小是否有限制。
我应该在PHP中使用ob_start()还是在建立一个大字符串,因为我没有问题?
我的报告最初是HTML,因此我正在发送该TCPDF。但是,如果我使用其他方法输出信息(如Cell,MultiCell等),TCPDF的性能会更好吗?
这是我输出PDF的代码。在$ PDF对象被设置为每相关TCPDF例子包括在库:
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
}
我会生成很多小报告并生成一个ZIP文件供用户下载,其中包含所有PDF文件。 –
有效的想法,但不是客户想要的。他们希望将报告放在一份PDF中的目录中,以便他们轻松地从报告切换到报告(学生信息到学生信息)。 –
为什么downvote?我讨厌downvote没有评论。 –