FPDF 错误:某些数据已输出,无法发送 PDF

2022-08-30 14:01:59

我正在为我的项目使用fpdf库,并且我正在使用它来扩展一个drupal模块。这些行

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

给我一个错误:FPDF错误:某些数据已经输出,无法发送PDF

我尝试在drupal区域名称测试之外的单独文件中创建它.php当查看时它起作用。这里有人知道为什么这不起作用吗?或者这里的任何人都可以给我指出一个正确的pdf库,我可以在drupal中使用它来查看HTML到PDF格式。


答案 1

要使 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工作的要求。


答案 2

在顶部添加,在末尾添加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(); 
?>

推荐