mPDF 错误:一些数据已经输出到浏览器,无法发送 PDF 文件

Posted

技术标签:

【中文标题】mPDF 错误:一些数据已经输出到浏览器,无法发送 PDF 文件【英文标题】:mPDF error: Some data has already been output to browser, can't send PDF file 【发布时间】:2014-12-20 14:31:38 【问题描述】:

我在尝试使用 mPDF 时遇到此类错误。 mPDF错误:部分数据已经输出到浏览器,无法发送PDF文件

代码如下:

<?php
include("mpdf60/mpdf.php");

$mpdf=new mPDF('c','A4','','' , 0 , 0 , 0 , 0 , 0 , 0); 

$mpdf->SetDisplayMode('fullpage');

$mpdf->list_indent_first_level = 0;  // 1 or 0 - whether to indent the first level of a list

$mpdf->Writehtml(file_get_contents('invoice.html'));

$mpdf->Output();


$to      = $_POST["email"];
$subject = 'the subject';
$message = 'hello';
$headers = 'From: narehh@mail.ru' . "\r\n" .
    'Reply-To: narehh@mail.ru' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

你有没有遇到过这个问题?如何解决? 谢谢

【问题讨论】:

TCPDF & mPDF error: Some data has already been output to browser, can't send PDF file 的可能重复项 检查 BOM! ***.com/questions/20146967/… 的可能重复项 @LucasF 我已经检查了那个问题,但答案对我没有帮助,所以我发布了这个。 【参考方案1】:

include("mpdf60/mpdf.php"); 之前尝试使用ob_end_clean 可能会解决您的问题。

【讨论】:

【参考方案2】:

我遇到了同样的问题,从 Khushal Nayani 的回答中,我发现出了什么问题: 在我的 *.php 文件中,我打印 $PDFcontent ((print($PDFcontent);)) 作为检查步骤,同时调用新的 pdf:((mpdf = new \Mpdf\Mpdf... etc.))。因此出现错误:Data has been sent to output...

是的,当我评论 (( //print($PDFcontent) )) 时,一切正常。

【讨论】:

【参考方案3】:

我遇到了同样的错误。

Data has already been sent to output, unable to output PDF file

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

在您为 pdf 准备数据的页面的第一行下方添加此 php 内置函数。

ob_start();

并在 mPDF 代码之前(在调用 mpdf 之前)添加这个内置的 php 函数。

ob_end_flush();

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

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

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

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

【讨论】:

以上是关于mPDF 错误:一些数据已经输出到浏览器,无法发送 PDF 文件的主要内容,如果未能解决你的问题,请参考以下文章

mPDF 错误:无法创建输出文件

mPDF将本地文件+文件内联输出到浏览器

在 mpdf 中将 pdf 文件输出到浏览器

FPDF 错误:一些数据已经输出,无法发送 PDF

FPDF 错误:一些数据已经输出,无法发送 PDF 文件。尝试了一切,但没有任何帮助

使用 MPDF 发送 PDF 电子邮件