1

好吧,我在尝试使用 php 类 FPDF 时遇到此错误:

FPDF error: Some data has already been output, can't send PDF file (output started at
/mnt/webc/e1/12/5691512/htdocs/adminpanel/fpdf/test.php:1)

我的 test.php

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

没有空白或任何东西......那么错误在哪里???

4

4 回答 4

2

一些编辑器在文件开头添加BOM 。

以十六进制查看您的文件并将其删除

于 2012-07-10T22:11:28.453 回答
0

这是因为两个原因

1-开头之前没有前导空格 2-之前已经输出了一些数据

2 reson的解决方案是去fpdf.inc.php

并找到这个功能

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

然后在这个函数的定义中在开始时写这个

ob_clean();  

这将清除以前的输出。

于 2013-08-28T06:52:30.200 回答
0

对我来说,这是弃用警告。我在 php.ini 中的 error_reporting 中添加了 & ~E_DEPRECATED 并重新启动了 Apache。

于 2013-11-15T10:09:14.017 回答
-1

我只在 Live Server 中遇到了同样的问题。但它在本地机器上工作。在文件开头添加 BOM,它在服务器上也不起作用。但是在本地机器上工作。您的实时代码需要进行一些更改。

1. 将 ob_start() 放在文件的第一行。

例子:

ob_start();    
$DOCROOTPATH = $_SERVER['DOCUMENT_ROOT'];   
$DOCROOTBASEPATH = dirname($_SERVER['DOCUMENT_ROOT']);    
include_once($DOCROOTPATH."/lib/commonarray.inc");    
include_once($DOCROOTPATH."/includes/class.payslip.php");    
include_once($_SERVER['DOCUMENT_ROOT']."/menucontrol.php");    

define('FPDF_FONTPATH','fpdf/font/');    
require('fpdf/fpdf.php');    

2. 在 $pdf->Output() 之后,你应该将 ob_end_flush() 放在 Same File 中。

例子:

$pdf=new PDF();     
$pdf->Open();     
$pdf->AliasNbPages();     
$pdf->AddPage();     
$pdf->SetFont('Times','',12);     
$pdf->pdfAllPages();      
$pdf->Output();      
ob_end_flush();     

现在去点击浏览器并查看您想要的pdf。

(或)一些编辑器在文件开头添加BOM 。

以十六进制查看您的文件并将其删除

于 2015-12-28T08:33:37.190 回答