【问题标题】:Create PDF with DOMPDF and Redirect使用 DOMPDF 和重定向创建 PDF
【发布时间】:2012-02-18 10:03:08
【问题描述】:

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

【问题讨论】:

    标签: php dompdf


    【解决方案1】:

    回答问题

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

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

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

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

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

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

    从 cmets 更新

    所以您正在使用stream() 方法向客户端发送PDF - 您不能将它与Location: 标头结合使用。这是因为 DOMPDF 已经将内容刷新到屏幕上。我曾假设您的 PDFRecipt.php 文件将 PDF 存储到磁盘的某个位置。

    更多详情请查看 DOMPDF 源代码:http://code.google.com/p/dompdf/source/browse/trunk/dompdf/lib/class.pdf.php#3061

    【讨论】:

    • 我试过了,但没用。它会创建 PDF 文件,但不会重定向。 :(
    • 您的PDFRecipt.php 文件包含什么?请使用源代码更新您的问题。我在执行上述操作时从未遇到过问题 - 代码中可能存在错误或冲突导致它无法重定向。
    猜你喜欢
    • 2015-06-11
    • 2023-03-22
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    相关资源
    最近更新 更多