私はプロジェクトに 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形式。
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出力が絶対にゼロであることが必要です。
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();
?>
以下のようにエラーを教えてください: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
オプションなしでファイルを保存してみてください:「BOMコメント」、つまりAdobe Dreamweaverでは、「名前を付けてファイルを保存...」、ncheckというファイル名の下のボックス、「Unicode署名(BOM)を含める」。
Notepad ++では、メニューを選択する必要があります:Encoding、 "BOMなしのUTF-8でエンコード"。
そして、あなたが作成する他のファイルをデフォルトにすることで、将来の頭痛の種を減らすことができます。
FPDFエラーメッセージは、コンテンツを送信しているPHP行を指します。
どのファイルとラインがコンテンツを送信するのかヒントが得られない場合、おそらくinclude/requireファイルのエンコーディングの不一致があります。
私のために
fpdf.php
はANSIエンコードされ、pdf-generator.php
はUTF-8エンコードされ、PDF生成前に通知/警告を出力するコードの場合は、それらをオフにしてみてください。error_reporting(0)
。
私の場合、私は設定していました:
ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);
レポートを生成するリクエストを行ったときに、いくつかの警告がブラウザに表示されました(廃止された機能の使用など)。off
を回すdisplay_errors
オプション、レポートは正常に生成されました。
こんにちは、ページの上部にセッションヘッダーがありますか。または任意のインクルードページの上部にこのコードを追加しようとした場合、正常に機能するはずです。
<?
while (ob_get_level())
ob_end_clean();
header("Content-Encoding: None", true);
?>
乾杯:-)
最初のステップは、フォルダのアクセス許可を確認します
ob_start();
行の前
$pdf->Output();
私は次のものを使用し、それは私のために働いた
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();
ライブラリを呼び出す必要があります
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();
?>