Php FPDF错误:一些数据已经输出,can';不要发送PDF

Php FPDF错误:一些数据已经输出,can';不要发送PDF,php,drupal,fpdf,Php,Drupal,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之外的一个单独文件中创建它,当查看它时,它工作了。这里有人

我正在为我的项目使用这个库,我正在使用它来扩展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();
?>

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

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

<?

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

?>


干杯:-)

FPDF错误消息将指向发送某些内容的PHP行

如果您没有得到什么文件和行发送某些内容的提示,您的include/require文件中可能存在编码不匹配

对我来说

  • fpdf.php
    是ANSI编码的
  • 我的
    pdf生成器.php
    是UTF-8编码的,并且
  • 我的数据库连接inlude是UTF-8编码的(这个UTF-8编码确实引发了FPDF错误。我不得不将它切换回ANSI)

尝试保存文件,但不要选择“BOM注释”,即在Adobe Dreamweaver中,将文件另存为…,取消选中文件名下方的“包含Unicode签名(BOM)”框

在记事本++上,您应该选择菜单:Encoding,“Encode in UTF-8 without BOM”


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

请给我一个错误,如下所示:
FPDF错误:某些数据已经输出,无法发送PDF

要克服此错误,请执行以下操作: 转到
fpdf.php
中的第996行

function Output($name='', $dest='')
然后进行如下更改:

function Output($name='', $dest='') {   
    ob_clean();     //Output PDF to so
在我的情况下,我设置了:

ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);
当我请求生成报告时,浏览器中显示了一些警告(如使用不推荐的函数)。

关闭
display\u errors
选项,报告生成成功。

您需要调用库

require('fpdf.php')


添加
ob_start()在顶部和末端添加
ob_end_flush()


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

ob_start(); 
排队前

$pdf->Output();

如果在生成PDF之前,代码输出通知/警告,请尝试将其关闭<代码>错误报告(0)
。然后在那里处理警告,我使用了下面的方法,它对我有效

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

添加到脚本的开头

ob_start();
require ('fpdf.php');
最后,在
output()之后


它对我有用!=)

致命错误:未捕获异常“exception”,消息为“FPDF错误:某些数据已经输出,无法发送PDF文件(输出开始于/home/asri123/public_html/bill/invoice/invoice.php:743)”in/home/asri123/public_html/bill/invoice/FPDF.php:271堆栈跟踪:#0/home/asri123/public_html/bill/invoice/FPDF.php(1052):FPDF->错误('Some data has a.)#1/home/asri123/public_html/bill/invoice/fpdf.php(1012):fpdf->_checkoutput()#2/home/asri123/public#html/bill/invoice/mirasbill.php(262):fpdf->输出('MSFS/2018-19/76…,'D')#3{main}在第271行的/home/asri123/public_html/bill/invoice/fpdf.php中抛出该警告,即使包含的php文件中只有一个空格,也会导致该警告。无论如何都不应该有任何输出。

另一个没有人在此处发布的答案…请仔细检查php文件的编码,并确保它不是其他内容UTF-8。错误的代码编辑器(或FTP上载?)可能会弄乱文件的编码,在这种情况下,本线程中提到的其他修复都不会有帮助。

oww好的,因为我刚刚将代码插入了.tpl文件中。它有使用echo/print或html标记和javascript语法的代码块。顺便说一句,我在php中不使用短标记。使用这个是的。这就是你的问题。使用
echo
也将破坏fpdf(我将编辑我的答案以显示这一点)。短标记和长标记不应该有什么区别,但你必须确保在你的php标记之外没有一个字符。@GordonBailey在php MVC框架中使用fpdf的方法是什么,例如在phalconphp中,但MVC的概念性答案非常受欢迎删除结尾“>”在每个PHP文件的末尾,尤其是代码中可能“包含”的任何PHP文件。如果“>”的存在,则表示之后可能会有“\r\n”下线,具体取决于您的编辑器,并且“\r\n”将在输出响应中发送,并污染您的PDF。这是解决我的问题的答案伟大的工作这是错误的解决方案FPDF错误:一些数据已经输出,无法发送PDF。这应该作为注释发布。我检查了此答案,因为它有效,特别是在外部有空格或换行符的情况下,无法找到所有标记。从调用函数调用“ob_clean”可能更安全,而不是在“Output”中函数。请注意,它还将隐藏可能实际导致问题的任何合法错误消息。如果您修复了错误(无论如何都应该这么做),这可能会解决您的问题,而不必求助于像这样的“黑客”。我使用了它,但它显示了-注意:ob_clean():未能删除缓冲区。第981行的/var/www/html/----/fpdf.php中没有要删除的缓冲区。这对我来说是有效的。从我的角度进行upvote。我在将文件移动到新服务器后发现OP注意到的错误。没有更改,只是更新
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();
ob_start();
require ('fpdf.php');
ob_end_flush();