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

时间:2016-02-08 17:59:25

标签: php html pdf mpdf

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

  

Adob​​e Acrobat Reader DC无法打开'example-filename.pdf'       因为它不是受支持的文件类型或因为文件       已被损坏(例如,它是作为电子邮件附件发送的       并没有正确解码)。

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

refreshRow

我删除了<!DOCTYPE html> <head> <title> CapstoneDB </title> %PDF-1.4 %âãÏÓ 之后的所有内容(包括标签页),文件在Adobe中打开很好,这很棒,除了我需要能够在Adobe中打开生成的pdf而无需手动摆弄每次都有代码。

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

%PDF-1.4

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

1 个答案:

答案 0 :(得分:10)

放置

ob_clean(); 

之前

$mpdf->Output();

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