web-dev-qa-db-ja.com

FPDFエラー:一部のデータはすでに出力されています。000webhost上のPDFファイルを送信できません。

FPDFクラスを使用してWebサイトでPDFを生成しています。エラーが発生し始めた最後の数週間まで、すべてがうまく機能しました。

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

過去数週間、コードに何も変更がなく、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によってWebページ上の他の出力を無効にする方法はありますか?または誰かが000webhostでfpdfを使用していますか?

5
user1857756

session.auto_startは1に設定されます。これにより、セッションが開始され、PHPSESSIDCookieがブラウザに送信されます。

次のコードを使用して、無効にすることができます。

<?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 to 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(); 
?>
11
Raymond Nijland

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

このエラーは、ブラウザページで他の何かを既にレンダリングした後でPDFを生成しようとした場合、たとえば、次のようなことをした場合に発生します。

エコー$値;

FPDFコードでは、出力をレンダリングするための「空白のキャンバス」が必要です(または、まだテストしていませんが、空白のiframeが必要です)。

1
Lapochka

次のような行を使用します。

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

問題は解決します;)

1
abid saleem

私の場合、私は設定しました:

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

レポートの生成をリクエストすると、ブラウザにいくつかの警告が表示されました(非推奨の関数の使用など)。
offを回すdisplay_errorsオプション、レポートは正常に生成されました。

1
Victor

私は最初にこの問題を修正するためにこれを置きました(ob_clean)は変更されませんPDF構造:

require('fpdf/fpdf.php');
ob_clean();
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ファイルを送信できません。

0
Juan Pablo