我正在为我的项目使用 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 生成的内容之外,根本不能有 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 中,将文件另存为...,取消选中文件名下方显示“包含 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
pdf-generator.php
。然后再处理警告
error_reporting(0)
最后,在
ob_start();
require ('fpdf.php');
之后
output()
这对我有用! =)
ob_end_flush();
行前
ob_start();
$pdf->Output();
并确保它不是 UTF-8 以外的编码。错误的代码编辑器(或 FTP 上传?)可能会扰乱文件的编码,在这种情况下,本线程中提到的其他修复均无济于事。
解决此问题的方法如下: 第 1 步:确保没有先前输出
确保在生成 PDF 之前没有发送空格或任何其他输出。这包括任何包含的文件中开始标记之前的任何空格或换行符。
<?php
require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'¡Hola, Mundo!');
$pdf->Output();
?>