使用DOMPDF和Redirect创建PDF

时间:2012-02-18 10:03:08

标签: php dompdf

在PHP项目中,我需要创建一个PDF文件,并在用户单击“提交”按钮时重定向到另一个页面。 我已设法使用DOMPDF创建pdf文件。 PDF创建在单独的文件('PDFRecipt.php')中完成。 当用户单击主页面上的按钮时,我已调用该页面。这是如何调用PDF页面

header('location:PDFRecipt.php');

但问题是我在通过

调用PDF页面后尝试重定向
header('location:Other.php');

它不会创建PDF(仅重定向)。我试过改变 header('location:PDFRecipt.php');include_once('PDFRecipt.php');

然后它没有正确创建PDF(损坏的PDF文件)

如何创建PDF文件&重定向到其他页面?

修改

PDFRecipt.php

中的代码
$html='SOME HTML';
include("../../dompdf/dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream('FileName.pdf');        
//header('location:Other.php);

1 个答案:

答案 0 :(得分:1)

回答问题

为此,您需要将第二个header调用移至PDFRecipt文件中。目前,他们两个都在一个文件中,你对header的第二次调用覆盖了第一个。

请记住,在将输出发送到用户浏览器时会发送标头,这就是为什么您经常会看到人们在exit()之后立即呼叫header('Location: http://example.org');

因此,设置相同标头的所有后续调用(在本例中为Location)将覆盖第一个标头,直到发送标头。

还值得指出的是,您应该使用Location中的完整网址:

  

HTTP / 1.1需要绝对URI作为»Location:includes的参数   方案,主机名和绝对路径,但有些客户接受   相对URI。你通常可以使用$ _SERVER ['HTTP_HOST'],   $ _SERVER ['PHP_SELF']和dirname()从a创建一个绝对URI   相对一个人

根据手册中的header页面:http://php.net/manual/en/function.header.php

从评论更新

因此,您使用stream()方法向客户端发送PDF - 您无法将其与Location:标头结合使用。这是因为DOMPDF已经将内容刷新到屏幕上。我假设您的PDFRecipt.php文件正在将PDF存储到磁盘。

有关详细信息,请参阅DOMPDF源代码:http://code.google.com/p/dompdf/source/browse/trunk/dompdf/lib/class.pdf.php#3061