我正在使用 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 中打开得很好,这很棒,除了我需要能够在 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");
}
我从不向 mpdf 提供完整的 html 页面,通常只是一个 h3 和一个或多个表格。也许我需要给 mpdf 一个完整的 html 页面,包括<head>
, <body>
, ETC?有没有什么方法可以更改 mpdf 配置或我在 php 中调用 mpdf 的方式来消除 pdf 文件开头的 html 垃圾,这些垃圾会搞乱一切?