繁体   English   中英

使用DOMPDF创建PDF并重定向

[英]Create PDF with DOMPDF and Redirect

在一个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);

回答问题

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

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

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

还值得指出的是,您应该在Location使用完整的Web URL:

HTTP / 1.1需要绝对URI作为»位置的参数:包括方案,主机名和绝对路径,但是某些客户端接受相对URI。 通常,您可以使用$ _SERVER ['HTTP_HOST'],$ _ SERVER ['PHP_SELF']和dirname()从您自己的亲戚那里创建绝对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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM