2013-08-11 7 views
5

私はFPDFクラスを使用して自分のWebサイトでpdfを生成しています。私はエラーを取得開始したときにすべてが最後の数週間までよく働い:最後の数週間の間にFPDFエラー:一部のデータが既に出力されています。000webhostでPDFファイルを送信できません。

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

は私のコードで何も変更していないと私はまた、任意の出力をチェックしているPHPの前に、不要なスペースを含む(FPDFをexecpt、無効なBOM署名など)

私は000webhost.comに関する私のウェブサイトを持っているので、ページの最後に分析コードも無効にしていますが、pdfはまだ動作しません。私が残した唯一の痕跡は、ソースコードでは謎です(私はChromeブラウザでソースコードをチェックしてみることができます)。

私もこの単純な例を仕事を得るカント:PHPでWebページ上の他の出力を無効にする方法は

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

ありますか?誰かが000webhostでfpdfを使用していますか?

+0

コード: – Dave

+0

fpdf.phpはwww.fpdf.orgの標準クラスファイルです。それにはつまらない – user1857756

+0

この場合、 '' ''はあなたのホストが何かうっかりしていることを意味します。私はより良いホストに切り替えるだろう。 – Dave

答えて

11

session.auto_startが1に設定されていると思います。セッションが開始され、PHPSESSIDのCookieがブラウザに送信されます。

あなたはそれが次のコードを使用して無効にしてみてください

:0からsession.auto_startが動作しない設定の場合

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

、この試してみてください。

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

スクリプト内に確実に設定するのは遅すぎますか?これが問題であれば、これはphp.ini – Dave

+0

で行う必要があります(これは問題の可能性がありますが)。これは '" "'の出力を説明しません。 – Dave

+0

trueですが、手動ではPHP_INI_ALL(どこにでも設定可能)というエントリがありますので、正しく動作しない場合は手動で設定してください。 –

19

だけ)(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(); 
?> 
+0

私はXAMPPの 'CD Collection'サンプルアプリをテストしていました。これはうまくいった。 – silver

+0

"Hello World"という文字列を変数に置き換えることはできますか?そこに追加する文字列がたくさんあります。 –

+0

'ob_end_flush(); ob_end_clean(); '私のために働いた、はい、両方とも! –

1

iを設定していた:

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

私はレポートを生成するための要求をしたときに、いくつかの警告が(非推奨の機能の使い方のような)ブラウザに表示されていました。
offオプションをdisplay_errorsにすると、レポートが正常に生成されました。

1

使用し、このような行:

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

問題は解決されます。)

0

すでにそのブラウザのページに何かをレンダリングした後、あなたが例えば、PDFを生成しようとすると、このエラーが発生します、あなたがこのような何かをした場合:

エコー$値;

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

require('fpdf/fpdf.php'); 
ob_clean(); 
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 

Error: Some data has already been output, can't send PDF file.

0

私はPDFの構造を変更しない(ob_clean)begginingでこの問題を解決するために、これをパット?
関連する問題