在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);
答案 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