PHP:Adobe Reader 无法打开使用 mpdf 创建的 PDF 文件


PHP: Adobe Reader can't open PDF files created with mpdf

我正在使用mpdf即时创建PDF文件,并且文件在浏览器中可以正常打开,但是Adobe给了我一个错误:

Adobe Acrobat Reader DC 无法打开"example-filename.pdf 因为它不是受支持的文件类型,或者因为文件 已损坏(例如,它是作为电子邮件附件发送的 并且未正确解码(。

我查看了有关此的其他问题(另一个mpdf + adobe错误(,并在文本编辑器中查看了pdf。我发现文件的第一部分看起来像这样:

<!DOCTYPE html>
<head>
    <title>
        CapstoneDB
    </title>
    %PDF-1.4
%âãÏÓ

在我删除了%PDF-1.4的所有内容(包括选项卡(后,文件在 Adobe 中打开得很好,这很棒,除了我需要能够让生成的 pdf 在 Adobe 中打开,而无需每次都手动摆弄代码。

这是我使用 html 和 css 调用 mpdf 的包装函数:

include('../mpdf/mpdf.php');
function user_download_pdf($html, $css_file, $filename) {
    $mpdf = new mPDF();
    $stylesheet = file_get_contents($css_file);
    $mpdf->WriteHTML($stylesheet,1);
    $mpdf->WriteHTML($html,2);
    $mpdf->Output($filename, "D");
}

我从不向 mpdf 提供完整的 html 页面,通常只是一个 h3 和一个或多个表。也许我需要给 mpdf 一个完整的 html 页面,包括 <head><body> 等?有没有办法更改 mpdf 配置或我在 php 中调用 mpdf 的方式,以摆脱 pdf 文件开头的 html 垃圾,这会破坏一切?

地点

ob_clean(); 

紧接着

$mpdf->Output();

如果没有这个 mpdf,有时会包含网站页面 HTML,而不仅仅是您想要在 PDF 中的 HTML,可能是因为标头已经在代码中的其他地方发送。这可能会弄乱您的PDF,因此Adobe不会打开它。