【问题标题】:How to fix 'Data has already been sent to output, unable to output PDF file' in MPDF如何修复 MPDF 中的“数据已发送到输出,无法输出 PDF 文件”
【发布时间】:2019-08-30 15:52:19
【问题描述】:

我尝试使用 MPDF 库生成 PDF。

try {
        $mpdf = new \Mpdf\Mpdf();
        $mpdf->WriteHTML('Hello World');
        // Other code
        $mpdf->Output("1.pdf", 'D');
    } catch (\Mpdf\MpdfException $e) { // Note: safer fully qualified exception name used for catch
        // Process the exception, log, print etc.
        echo $e->getMessage();
    }

我收到此错误消息。

数据已经发送到输出,无法输出PDF文件

我使用了 ob_end_clean() 但没有工作。 我在这个问题中使用了所有答案,但对我没有任何作用。 TCPDF & mPDF 错误:部分数据已输出到浏览器,无法发送 PDF 文件

【问题讨论】:

标签: php pdf-generation mpdf


【解决方案1】:

我遇到了同样的错误。

数据已经发送到输出,无法输出PDF文件

这意味着在使用 mPDF 创建 pdf 之前,一些数据存储在发送到浏览器的缓冲区中。因此无法创建 PDF。

只要这样做.. 如果您正在为 pdf 准备数据,请在页面第一行的 php 内置函数下方添加。

op_start();

并在 mPDF 代码之前(在您调用 mpdf 之前)之前添加以下 php 内置函数

ob_end_flush();

require_once __DIR__ . '/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML($html);
$mpdf->Output();

这样它会在处理 mPDF 之前清除所有缓冲区输出。

确保如果您使用任何功能,则将其保留在同一页面中,不要包含您保留所有功能的功能页面。

【讨论】:

    【解决方案2】:

    对我来说,插入 <?php 而不是 <? 很有帮助。

    【讨论】:

    • <?php<?没有区别
    猜你喜欢
    • 1970-01-01
    • 2015-03-12
    • 2013-12-07
    • 2018-01-10
    • 2017-01-05
    • 2020-05-15
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多