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-&gt;Output() 之前输出内容。在$mpdf-&gt;Output() 之前我需要一些空白的东西才能工作。

我正在考虑首先重定向到一个完全空白的页面,然后执行$mpdf-&gt;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 创建可以工作?的主要内容,如果未能解决你的问题,请参考以下文章

联系表单提交后如何重定向到感谢页面 - Wordpress 高级主题联系我们 php 模板 [关闭]

如何将联系表重定向到感谢页面

如何重定向到 Wordpress 中的不同管理页面?

如何给一个href以重定向到wordpress中的页面?

在Wordpress上发布保存后更改重定向URL

登录后如何将WordPress用户重定向到上一页