Wordpress:如何重定向到空白页面以便内联/浏览器 PDF 创建可以工作?
Posted
技术标签:
【中文标题】Wordpress:如何重定向到空白页面以便内联/浏览器 PDF 创建可以工作?【英文标题】:Wordpress: How to redirect to a blank page so inline/browser PDF creation will work? 【发布时间】:2015-01-05 16:24:00 【问题描述】:我正在 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()
。有关如何最好地解决此问题的任何建议?
【问题讨论】:
创建另一个不带get_header()
和get_footer()
的模板并放入mPDF 代码。它应该可以完成这项工作。
【参考方案1】:
问题似乎是您在尝试输出 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。最佳做法是将表单处理器从模板文件中取出。您可以将它放在主题的 functions.php 文件中或将其作为插件实现。将后端处理与前端分开有助于避免此类情况。
【讨论】:
我在模板中有 get_header() 和 get_footer() (看起来很漂亮),这给了我问题。那么我是否应该创建另一个没有页眉/页脚的模板,其中包含 mpdf 内容,然后只是一个从“漂亮”模板页面到空白页面的 链接? 正如我所提到的,您可能希望将表单处理与模板分开。将表单处理代码添加到 functions.php 文件中,然后您可以将 get_header 和 get_footer 保留在模板中而不会导致任何问题。 如果由于某种原因您必须将表单处理保留在模板文件中,请将其移至get_header()
上方,它应该可以工作。以上是关于Wordpress:如何重定向到空白页面以便内联/浏览器 PDF 创建可以工作?的主要内容,如果未能解决你的问题,请参考以下文章