繁体   English   中英

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

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

我正在使用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吗?

只需插入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();
?>

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

在我的情况下,我已经设置:

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

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

使用这样的行:

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

问题将解决;)

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

echo $ value;

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

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文件。

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

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

暂无
暂无

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

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