我正在使用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吗?
答案 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();