【发布时间】:2013-10-31 17:27:04
【问题描述】:
我正在使用基于 html 表单输入和上传文件的 smarty 模板生成 php 页面。使用dompdf,我想将生成的页面保存为pdf文件。
当用户提交 multipart/form-data 时,数据会发布到自己。然后进行验证过程。一切正常后,使用模板文件生成一个新页面。没有输出,相反,dompdf 利用模板文件流式传输 pdf 文件。在解决了“找不到 DOMPDF”、内存不足等几个阶段的问题后,我现在遇到了“无法流式传输 pdf:标头已发送”错误。
最常见的问题之一是在调用 stream() 之前存在换行符、空格或任何输出。我在 ?.
之前和之后检查了空格也没有 print_f 或 echo 语句。如何解决此问题?问题出在哪里……在 smarty 模板文件或 php 文件本身? 代码如下:
require_once("dompdf/dompdf_config.inc.php");
spl_autoload_register('DOMPDF_autoload');
$html = $smarty->fetch('index.tpl');
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper('a4', 'portrait');
$dompdf->render();
$dompdf->stream("newfile.pdf");
【问题讨论】:
-
检查 dompdf 本身(或 smarty)没有做一些隐藏的输出。例如注释掉 $dompdf-stream() 调用,点击 url,然后保存内容...看看里面有什么。
-
您使用的是哪个 smarty 版本?在某些旧版本中,smarty 会在编译文件的开头添加空格