2012-07-10 70 views
1

好,我得到這個錯誤嘗試使用PHP類FPDF:FPDF錯誤:一些數據已輸出,不能發送PDF文件

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

有沒有空白或任何東西......那麼錯誤在哪裏?

回答

2

某些編輯器在文件開始時添加了BOM

查看你的文件,以十六進制,並刪除它

+0

OMG !!! ...你讓我的一天(夜晚)!!! WOWWWW .. :-) – user1137370 2012-07-10 22:40:02

0

是becouse兩個原因

1 - 有在開幕前沒有前導空格 2是一些數據已經輸出之前

2振振有辭的解決方案是 去fpdf.inc.php

,找到這個功能可按

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

,然後在這個函數的認定中,在開始

ob_clean(); 

這將清除以前的輸出寫入這一點。

0

對我來說,這是貶低警告。我在我的php.ini中添加了&〜E_DEPRECATED到我的error_reporting並重新啓動了Apache。

-1

我在Live Server中遇到同樣的問題。但它在本地計算機上工作。在文件開始時添加BOM,但在服務器上不起作用。但在本地機器上工作。 Live代碼需要進行一些更改。

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 - >輸出(),你應該把ob_end_flush()函數在同一文件中。

例子:

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

現在去點擊瀏覽器,看看你想要的PDF格式。

(OR) 一些編輯器增加了BOM在文件的開始。

查看文件十六進制並將其刪除

相關問題