![](/img/trans.png)
[英]Fatal error using FPDF:Some data has already been output, can't send PDF file?
[英]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 注釋”選項的情況下保存文件,即在 Adobe 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 編碼的,並且第一步檢查文件夾的權限第二步把這個
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();
?>
在/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.