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

Pot*_*ato 4 html php pdf mpdf

我正在使用mpdf来动态创建PDF文件,并且文件在浏览器中打开很好,但Adobe给了我一个错误:

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

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

<!DOCTYPE html>
<head>
    <title>
        CapstoneDB
    </title>
    %PDF-1.4
%âãÏÓ
Run Code Online (Sandbox Code Playgroud)

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

这是我的包装函数,用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");
}
Run Code Online (Sandbox Code Playgroud)

我从不向mpdf提供一个完整的html页面,通常只是一个h3和一个或多个表.也许我需要给MPDF整个HTML页面,其中包括<head>,<body>,等?有没有办法改变mpdf配置或我在php中调用mpdf的方式,可以摆脱pdf文件开头的html垃圾,这些文件正在解决所有问题?

Mar*_*kol 11

地点

ob_clean(); 
Run Code Online (Sandbox Code Playgroud)

就在此之前

$mpdf->Output();
Run Code Online (Sandbox Code Playgroud)

如果没有这个mpdf,有时会包含网页HTML,而不仅仅是PDF中你想要的HTML,可能是因为标题已经在代码中的其他地方发送过了.这可能会弄乱你的PDF,所以Adobe不会打开它.