【问题标题】:FPDF error: Some data has already been outputFPDF 错误:一些数据已经输出
【发布时间】:2023-09-15 08:58:01
【问题描述】:

每当我尝试使用 FPDF 创建 PDF 时,都会收到以下错误:

FPDF 错误:一些数据已经输出,无法发送 PDF 文件(输出开始于路径:15)。

当我的文件中只有 PDF 脚本时,它可以工作,但我需要从我的数据库中收集一些数据。

我已将ob_clean(); 添加到函数Output();,但不幸的是,它仍然无法正常工作。

下面是我的代码:

<?php
include "connect.php";

$orderId = $_GET['OrderId'];
$findOrders = mysql_query("SELECT * FROM orderLines WHERE OrderId = $orderId ");
if (!$findOrders) { 
    die('Invalid query: ' . mysql_error());
}

while($row=mysql_fetch_array($findOrders)){
    $article = $row['article'];
    $quantity = $row['quantity'];
    $price = $row['price'];
}

require('fpdf17/fpdf.php');

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

【问题讨论】:

  • 在没有看到相关代码的情况下帮不了你,只是说,你正在向浏览器发送输出,可能是&lt;?php ?&gt; 标签之外的空格。
  • 你能发布你的脚本吗?
  • 我认为你的代码中有空格或回声。

标签: php pdf fpdf


【解决方案1】:

当出现此错误时,表示除了PHP文件之外,还有一些数据正在发送到您的浏览器,即FPDF将文件头发送到PDF文件,

header('Content-Type: application/pdf');

但是您在标头规范之前输入了一些数据,例如字符甚至空格,这会导致错误。

两种选择:

1) 在脚本的开头设置require('fpdf17/fpdf.php');。所以,表头不能更改,在表头设置之前不会有入口;

2) 如果您说脚本在没有数据库搜索的情况下工作,那么错误可能在connect.php 文件中。查看它以确保它不会向浏览器发送任何内容(在 &lt;?php ?&gt; 内部和外部!

P.S.:FPDF 在调用时已经执行ob_clean()

【讨论】:

  • 感谢您的回答。但是,我仍然有同样的问题。我查看了我的 connect.php,它看起来不错并且 require('fpdf17/fpdf.php');现在位于脚本之上。即使我在回显某些内容,我也会收到错误消息。
  • 您可以编辑您的第一篇文章,添加connect.php 并更新我们的可视化的 FPDF 脚本吗?
  • 奇怪...我测试了你的代码并在这里运行良好,将$link = mysql_connect('localhost', 'db', 'pass');上的'db'更改为'username'