FPDF错误:一些数据已经输出,可以';t发送PDF


FPDF error: Some data has already been output, can't send PDF

我正在为我的项目使用fpdf库,我正在使用它来扩展其中一个drupal模块。这些线路

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();

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

我试着在drupal区域名称test.php之外的一个单独的文件中创建这个,当看到它时,它起了作用。这里有人知道为什么不起作用吗?或者这里的任何人都可以给我指一个合适的pdf库,我可以在drupal中使用它来查看HTML到pdf格式。

要使fpdf正常工作,除了fpdf生成的内容之外,根本不能有任何输出。例如,这将起作用:

<?php
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

而这不会(注意打开<?标签前的前导空格)

 <?php
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

同样,这也不起作用(echo会破坏它):

<?php
echo "About to create pdf";
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

我不确定drupal方面的情况,但我知道fpdf工作需要绝对零的非fpdf输出。

在顶部添加ob_start ();,在末尾添加ob_end_flush();

<?php
    ob_start();
    require('fpdf.php');
    $pdf = new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'Hello World!');
    $pdf->Output();
    ob_end_flush(); 
?>

给我一个错误,如下所示:
FPDF error: Some data has already been output, can't send PDF

为了克服这个错误:转到fpdf.php,转到行号996

function Output($name='', $dest='')

之后做出这样的改变:

function Output($name='', $dest='') {   
    ob_clean();     //Output PDF to so

尝试在没有"BOM注释"选项的情况下保存文件,即在Adobe Dreamweaver中,您可以将文件另存为…,取消选中文件名下方的框,该框上写着"包括Unicode签名(BOM)"。

在Notepad++上,您应该选择菜单:编码,"在没有BOM的情况下以UTF-8编码"。

并将其设置为您创建的其他文件的默认值,这将使您在未来省去很多麻烦。

嗨,你的页面顶部有会话标题吗。或任何包括如果你尝试在页面顶部添加这些代码,它应该可以正常工作。

<?
while (ob_get_level())
ob_end_clean();
header("Content-Encoding: None", true);
?>

欢呼:-)

在我的情况下,我设置了:

ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);

当我请求生成报告时,浏览器中显示了一些警告(比如使用了不推荐使用的函数)
off选项设置为display_errors选项,报告已成功生成。

FPDF错误消息将指向正在发送一些内容的PHP行。

如果你没有得到任何提示什么文件&行发送某些内容您可能在include/request文件中存在编码不匹配。

对我来说

  • CCD_ 9为ANSI编码
  • 我的CCD_ 10是UTF-8编码的
  • 我的数据库连接插件是UTF-8编码的(这个UTF-8代码确实引发了FPDF错误。我不得不将其切换回ANSI)

如果您是在生成PDF之前输出通知/警告的代码,请尝试关闭它们。error_reporting(0)。然后在之后处理警告

添加到脚本的开头

ob_start();
require ('fpdf.php');

最后,在output() 之后

ob_end_flush();

它对我有用

即使包含的php文件中只有一个空格也会导致该警告。无论如何都不应该有任何输出。

第一步检查文件夹的权限第二步把这个

ob_start(); 

在线之前

$pdf->Output();

我使用了以下内容,它对我的有效

require_once ('pdf/fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output(F,'/var/www/html/PATH/filename.pdf');
ob_end_flush();

您需要调用库

require('fpdf.php');

<?php
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'¡Hola, Mundo!');
$pdf->Output();
?>

http://www.fpdf.org/

http://www.fpdf.org/es/tutorial/tuto1.htm

致命错误:未捕获异常"exception",消息为"FPDF error:某些数据已输出,无法发送PDF文件(输出起始于/home/asri123/public_html/bill/invoice/fpdf.php:743)'in/home/aspri123/ppublic_html/bbill/invoice/fipdf.php:271堆栈跟踪:#0/home/asri123/public_html/bill/inInvoice/fpdf.php/bill/vInvoice/mirasbill.php(262):FPDF->输出('MSFS/2018-19/76…','D')#3{main}在/home/asri123/public_html/bill/invoice/FPDF.php的第271行抛出

其他人没有在这里发布的另一个答案仔细检查PHP文件的编码并确保它不是UTF-8以外的文件。错误的代码编辑器(或FTP上传?)可能会干扰文件的编码,在这种情况下,本线程中提到的其他修复都无济于事。