簡體   English   中英

FPDF 錯誤:一些數據已經輸出,無法發送 PDF

[英]FPDF error: Some data has already been output, can't send PDF

我正在為我的項目使用fpdf庫,並且我正在使用它來擴展其中一個 drupal 模塊。 這些行

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

給我一個錯誤: FPDF錯誤:一些數據已經輸出,不能發送PDF

我嘗試在 drupal 區域名稱 test.php 之外的單獨文件中創建它,並且在查看時它有效。 這里的任何人都知道為什么這不起作用? 或者這里的任何人都可以為我指出一個正確的 pdf 庫,我可以在 drupal 中使用它來查看 HTML 到 PDF 格式。

要使 fpdf 正常工作,除了 fpdf 生成的內容之外根本不能有任何輸出。 例如,這將起作用:

<?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 注釋”選項的情況下保存文件,即在 Adob​​e Dreamweaver 中,將文件另存為...,取消選中文件名下方的“包含 Unicode 簽名(BOM) ”框。

在 Notepad++ 上,您應該選擇菜單: Encoding ,“ Encode in UTF-8 without BOM ”。

並將其設置為您創建的其他文件的默認設置,它將為您省去很多麻煩。

嗨,您的頁面頂部是否有會話標題。 或任何包含如果您嘗試在頁面頂部添加此代碼,它應該可以正常工作。

<?

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

?>

干杯:-)

就我而言,我已經設置:

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

當我發出生成報告的請求時,瀏覽器中會顯示一些警告(例如使用不推薦使用的功能)。
off display_errors選項,報告生成成功。

FPDF 錯誤消息會將您指向正在發送某些內容的 PHP 行。

如果您沒有得到提示什么 File & Line 發送一些內容,則您的 include / require 文件中可能存在編碼不匹配。

給我

  • fpdf.php是 ANSI 編碼的,
  • 我的pdf-generator.php是 UTF-8 編碼的,並且
  • 我的 database-connect-inlude 是 UTF-8 編碼的(這個 UTF-8 編碼確實引發了 FPDF 錯誤。我不得不將它切換回 ANSI)

第一步檢查文件夾的權限第二步把這個

ob_start(); 

行前

$pdf->Output();

如果您在 PDF 生成之前代碼輸出通知/警告,請嘗試將其關閉。 error_reporting(0) 然后處理之后的警告

添加到腳本的開頭

ob_start();
require ('fpdf.php');

最后,在output()之后

ob_end_flush();

它對我有用! =)

我使用了以下內容,它對我有用

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

你需要打電話給圖書館

要求('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

在/home/asri123/public_html/bill/invoice/fpdf.php:271 堆棧跟蹤:#0 /home/asri123/public_html/bill/invoice/fpdf.php(1052): FPDF->Error('一些數據有一個。 ..') #1 /home/asri123/public_html/bill/invoice/fpdf.php(1012): FPDF->_checkoutput() #2 /home/asri123/public_html/bill/invoice/mirasbill.php(262): FPDF->Output('MSFS/2018-19/76...', 'D') #3 {main} 在第 271 行的 /home/asri123/public_html/bill/invoice/fpdf.php 中拋出

即使包含的 php 文件中的單個空格也會導致該警告。 無論如何都不應該有任何輸出。

沒有其他人在此處發布的另一個答案...仔細檢查您的 PHP 文件的編碼,並確保它不是 UTF-8 以外的東西。 錯誤的代碼編輯器(或 FTP 上傳?)可能會弄亂文件的編碼,在這種情況下,此線程中提到的其他修復都無濟於事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM