Adobe Reader 無法打開使用 FPDF 創建的 PDF


PDF created with FPDF cannot be opened by Adobe Reader

我的PDF文件无法使用Adobe Reader打开。奇怪的是,PDF在几天前曾经在Adobe Reader中工作,现在它不起作用,当然我没有修改代码,否则很容易修复。

我验证了我的PDF并了解到它是PDF/A-3,可能它不是PDF/A-1吗?如果是这样,为什么它工作了一段时间,突然停止工作?

编辑

问题在于,不知何故,PDF文件中输出了一些HTML代码,从而使PDF文件对Adobe Reader无效,但对Firefox无效,这使得这一切变得比应有的更加混乱。

因此,无论如何在PDF上遇到问题的提示,请使用文本编辑器(例如Windows的Notepad ++或Linux的GEdit)打开它,并与另一个工作正常的PDF文件进行比较。您应该很快找到问题。

我读了很多关于这个问题的问题,我知道问题发生在:

ob_start();

如果没有这一行,我的 FPDF 无法处理消息,说明首先还有另一个缓冲区。使用此行,PDF 只能使用浏览器读取。

我将此行更改为:

ob_clean();

现在我可以用任何阅读器打开 PDF。

这也发生在我身上。它确实在Firefox中为我工作,但在Chrome中不起作用,也无法在Adobe中打开。

问题是我尝试在函数中运行脚本并从按钮调用函数。我只是通过将脚本添加到它自己的 PHP 文件中,然后直接链接到 php 文件来修复它。

注意:我确实尝试了ob_start()(或者ob_clean()如另一个答案中所述)和ob_end_flush(),但它对功能没有影响。当它在自己的文件中时,它无论如何都不需要它。

// file.php
<?php
require $_SERVER['DOCUMENT_ROOT'].'/wp-content/plugins/eri-webtools-plugin/libraries/fpdf/fpdf.php'; // <-- File path for WordPress plugin
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output(); // To Download, use $pdf->Output('D', 'test.pdf', true);
?>
// html
<a href="file.php">View PDF</a>