繁体   English   中英

FPDF错误:已经输出了一些数据,无法发送PDF文件

[英]FPDF error: Some data has already been output, can't send PDF file

好吧,我在尝试使用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();
?>

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

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

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

这是因为两个原因

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

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

并找到这个功能

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

然后在定义此功能时将其写入开始

ob_clean();  

这将清除先前的输出。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM