PHP: Adobe Reader 无法打开使用 mpdf 创建的 PDF 文件
PHP: Adobe Reader can't open PDF files created with mpdf
我正在使用 mpdf 即时创建 PDF 文件,文件在浏览器中打开正常,但 Adobe 给我一个错误:
Adobe Acrobat Reader DC could not open 'example-filename.pdf'
because it is either not a supported file type or because the file
has been damaged (for example, it was sent as an email attachment
and wasn't correctly decoded).
我查看了有关此的其他问题 (another mpdf + adobe error),并在文本编辑器中查看了 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>
等?有没有什么方法可以更改 mpdf 配置或我在 php 中调用 mpdf 的方式,这将消除 pdf 文件开头的 html 垃圾,这些垃圾会破坏一切?
地点
ob_clean();
紧接着
$mpdf->Output();
如果没有此 mpdf,有时会包含网站页面 HTML 而不仅仅是您想要在 PDF 中包含的 HTML,可能是因为 headers 已在代码中的其他地方发送。这可能会弄乱您的 PDF,因此 Adobe 无法打开它。
我正在使用 mpdf 即时创建 PDF 文件,文件在浏览器中打开正常,但 Adobe 给我一个错误:
Adobe Acrobat Reader DC could not open 'example-filename.pdf' because it is either not a supported file type or because the file has been damaged (for example, it was sent as an email attachment and wasn't correctly decoded).
我查看了有关此的其他问题 (another mpdf + adobe error),并在文本编辑器中查看了 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>
等?有没有什么方法可以更改 mpdf 配置或我在 php 中调用 mpdf 的方式,这将消除 pdf 文件开头的 html 垃圾,这些垃圾会破坏一切?
地点
ob_clean();
紧接着
$mpdf->Output();
如果没有此 mpdf,有时会包含网站页面 HTML 而不仅仅是您想要在 PDF 中包含的 HTML,可能是因为 headers 已在代码中的其他地方发送。这可能会弄乱您的 PDF,因此 Adobe 无法打开它。