FPDF错误:有些数据已经输出,无法在000webhost上发送PDF文件

时间:2013-08-11 13:32:35

标签: php fpdf

我正在使用FPDF类在我的网站上生成pdf。一切顺利,直到我开始收到错误的最后几周:

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

在过去的几周里,我的代码中没有任何改变,我也检查过任何输出execpt fpdf(包括php之前的不必要空间,禁用BOM签名等)。

我的网站在000webhost.com上,所以我也在页面末尾禁用了分析代码,但pdf仍然不起作用。我留下的唯一痕迹是源代码中的神秘“(我在Chrome浏览器中查看源代码时可以看到它)。

即使是这个简单的例子,我也无法工作:

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

有没有办法通过php禁用网页上的任何其他输出?或者有人在000webhost上使用fpdf吗?

7 个答案:

答案 0 :(得分:21)

只需插入ob_end_clean();在输出之前。

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

答案 1 :(得分:12)

我认为session.auto_start设置为1.这将启动会话并向浏览器发送PHPSESSID Cookie。

您可以尝试使用以下代码禁用它:

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

如果将session.auto_start设置为0不起作用,请尝试以下操作:

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

答案 2 :(得分:1)

就我而言,我已经设定了:

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

当我提出生成报告的请求时,浏览器中会显示一些警告(例如使用已弃用的功能)。
转动off display_errors选项,报告已成功生成。

答案 3 :(得分:1)

使用这样的行:

require('fpdf.php');    ob_end_clean();    header("Content-Encoding: None", true);

问题将解决;)

答案 4 :(得分:1)

如果您在该浏览器页面上已经渲染了其他内容后尝试生成PDF,则会发生此错误,例如,如果您执行了类似的操作:

echo $ value;

FPDF代码想要一个“空白画布”来渲染它的输出(或者,一个猜测,一个空白的iframe,虽然我还没有测试过。)

答案 5 :(得分:0)

SELECT motivo, 
       unidad_trans, 
       km_inicial, 
       km_final, 
       rut_chofer, 
       To_char(hora_inicial, 'DD/MM/YYYY HH:mm'), 
       To_char(hora_final, 'DD/MM/YYYY HH:mm'), 
       total_recorrido, 
       destino, 
       cod_combustible, 
       cantidad_litros, 
       cod_vehiculo, 
       d.cod_estableci 
FROM   mov_bitacora b, 
       mov_chofer c, 
       nuc_dependencias d, 
       mov_combustible co, 
       mov_vehiculo v 
WHERE  b.unidad_tran = d.cod_estableci 
       AND b.rut_chofer = c.rut_chofer 
       AND b.cod_combustible = co.cod_combustible 
       AND b.cod_vehiculo = v.cod_vehiculo 
       AND id_bitacora = 6fpdf 
  

错误:某些数据已经输出,无法发送PDF文件。

答案 6 :(得分:0)

我推迟了这个来解决这个问题,在beggining(ob_clean)中不会改变PDF结构:

require('fpdf/fpdf.php');
ob_clean();