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 文件的主要内容,如果未能解决你的问题,请参考以下文章