我在Wordpress中使用mPDF。
我创建了一个wordpress模板,其中有以下代码:
echo '<form name="MyForm" method="post">';
echo '<input name="download" type="submit" value="Download PDF" />';
echo '</form>';
if(isset($_POST['download'])) {
include('mpdf/mpdf.php');
$mpdf=new mPDF();
$mpdf->WriteHTML($my_html_stuff);
$mpdf->Output('my_file.pdf', 'D');
}
这是行不通的,因为 Wordpress 在 $mpdf->Output()
之前输出东西。在$mpdf->Output()
之前,我需要一些空白的东西才能正常工作。
我正在考虑首先重定向到一个完全空白的页面,然后执行$mpdf->Output()
.关于如何最好地解决这个问题的任何建议?
看起来问题是您在尝试输出 PDF 之前输出表单。
尝试先输出 PDF,然后终止脚本:
if(isset($_POST['download'])) {
include('mpdf/mpdf.php');
$mpdf=new mPDF();
$mpdf->WriteHTML($my_html_stuff);
$mpdf->Output('my_file.pdf', 'D');
exit;
}
echo '<form name="MyForm" method="post">';
echo '<input name="download" type="submit" value="Download PDF" />';
echo '</form>';
此外,请确保在表单处理器之前没有任何输出。如果这是主题中的模板,请不要调用get_header。最佳做法是将表单处理器从模板文件中取出。您可以将其放在主题的功能.php文件中,也可以将其作为插件实现。将后端处理与前端分开有助于避免此类情况。