我正在为我的项目使用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++上,您应该选择菜单:编码,"在没有BOM的情况下以UTF-8编码"。
并将其设置为您创建的其他文件的默认值,这将使您在未来省去很多麻烦。
嗨,你的页面顶部有会话标题吗。或任何包括如果你尝试在页面顶部添加这些代码,它应该可以正常工作。
<?
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行。
如果你没有得到任何提示什么文件&行发送某些内容您可能在include/request文件中存在编码不匹配。
对我来说
- CCD_ 9为ANSI编码
- 我的CCD_ 10是UTF-8编码的
- 我的数据库连接插件是UTF-8编码的(这个UTF-8代码确实引发了FPDF错误。我不得不将其切换回ANSI)
如果您是在生成PDF之前输出通知/警告的代码,请尝试关闭它们。error_reporting(0)
。然后在之后处理警告
添加到脚本的开头
ob_start();
require ('fpdf.php');
最后,在output()
之后
ob_end_flush();
它对我有用
即使包含的php文件中只有一个空格也会导致该警告。无论如何都不应该有任何输出。
第一步检查文件夹的权限第二步把这个
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();
?>
http://www.fpdf.org/
http://www.fpdf.org/es/tutorial/tuto1.htm
致命错误:未捕获异常"exception",消息为"FPDF error:某些数据已输出,无法发送PDF文件(输出起始于/home/asri123/public_html/bill/invoice/fpdf.php:743)'in/home/aspri123/ppublic_html/bbill/invoice/fipdf.php:271堆栈跟踪:#0/home/asri123/public_html/bill/inInvoice/fpdf.php/bill/vInvoice/mirasbill.php(262):FPDF->输出('MSFS/2018-19/76…','D')#3{main}在/home/asri123/public_html/bill/invoice/FPDF.php的第271行抛出
其他人没有在这里发布的另一个答案仔细检查PHP文件的编码并确保它不是UTF-8以外的文件。错误的代码编辑器(或FTP上传?)可能会干扰文件的编码,在这种情况下,本线程中提到的其他修复都无济于事。