web-dev-qa-db-ja.com

FPDFエラー:一部のデータは既に出力されています。送信できませんPDF

私はプロジェクトに fpdf ライブラリを使用していますが、これを使用してdrupalモジュールの1つを拡張しています。これらの行

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

エラーをください:FPDFエラー:一部のデータはすでに出力されていますが、PDFを送信できません

これをdrupalエリア名test.php以外の別のファイルで作成してみましたが、表示したときに動作しました。 drupalでHTMLを表示するために使用できるライブラリPDF形式。

25
Wondering Coder

Fpdfが正常に機能するためには、fpdfが生成するものの横にany出力を含めることはできません。たとえば、これは動作します:

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

これはしませんが(開始前の先頭のスペースに注意してください<?タグ)

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

また、これも機能しません(echoが壊れます):

<?php
echo "About to create pdf";
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

drupalの側面についてはわかりませんが、fpdfが機能しないためには、非fpdf出力が絶対にゼロであることが必要です。

42
Gordon Bailey

ob_start ();を先頭に追加し、最後にob_end_flush();を追加します

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

以下のようにエラーを教えてください:
FPDF error: Some data has already been output, can't send PDF

このエラーを克服するには:fpdf.phpその中で、行番号996に移動

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

その後、次のように変更します。

function Output($name='', $dest='') {   
    ob_clean();     //Output PDF to so
18
raghavendra

オプションなしでファイルを保存してみてください:「BOMコメント」、つまりAdobe Dreamweaverでは、「名前を付けてファイルを保存...」、ncheckというファイル名の下のボックス、「Unicode署名(BOM)を含める」。

Notepad ++では、メニューを選択する必要があります:Encoding、 "BOMなしのUTF-8でエンコード"。

そして、あなたが作成する他のファイルをデフォルトにすることで、将来の頭痛の種を減らすことができます。

4
Andrey Aires

FPDFエラーメッセージは、コンテンツを送信しているPHP行を指します。

どのファイルとラインがコンテンツを送信するのかヒントが得られない場合、おそらくinclude/requireファイルのエンコーディングの不一致があります。

私のために

  • fpdf.phpはANSIエンコードされ、
  • 僕の pdf-generator.phpはUTF-8エンコードされ、
  • 私のdatabase-connect-inludeはUTF-8エンコードされていました(このUTF-8エンコードはFPDFエラーを発生させました。ANSIに戻す必要がありました)
2
HansWurst

PDF生成前に通知/警告を出力するコードの場合は、それらをオフにしてみてください。error_reporting(0)

2
Cliff Ombachi

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

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

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

2
Victor

こんにちは、ページの上部にセッションヘッダーがありますか。または任意のインクルードページの上部にこのコードを追加しようとした場合、正常に機能するはずです。

<?

while (ob_get_level())
ob_end_clean();
header("Content-Encoding: None", true);

?>

乾杯:-)

2
Cino Jose

最初のステップは、フォルダのアクセス許可を確認します

ob_start(); 

行の前

$pdf->Output();
1

私は次のものを使用し、それは私のために働いた

require_once ('pdf/fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output(F,'/var/www/html/PATH/filename.pdf');
ob_end_flush();
1
Wasim Khan

ライブラリを呼び出す必要があります

require( 'fpdf.php');

<?php
require('fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'¡Hola, Mundo!');
$pdf->Output();
?>

http://www.fpdf.org/

http://www.fpdf.org/es/tutorial/tuto1.htm

0
Proyecto Pi