在 mpdf 中将 pdf 文件输出到浏览器

Posted

技术标签:

【中文标题】在 mpdf 中将 pdf 文件输出到浏览器【英文标题】:In mpdf to Output a pdf file to a Browser 【发布时间】:2015-10-18 19:08:23 【问题描述】:

我正在尝试查看使用 mpdf 创建的 pdf 文件。 关于使用命令作为

$pdf = $mpdf->Output('mep.pdf','I');

PDF 会被下载。 虽然,我:将文件内联发送到浏览器。如果可用,则使用该插件。当在生成 PDF 的链接上选择“另存为”选项时,将使用文件名给出的名称。

我想在浏览器中查看 pdf,并根据用户选择下载、打印或查看并退出。

请帮助。谢谢。

【问题讨论】:

我看到你使用变量 $pdf 来存储 $mpdf->Output('mep.pdf','I');。难道是因为这个。有没有直接试:$mpdf->Output('mep.pdf','I'); ? 【参考方案1】:

这取决于浏览器是否可以并且是否会内联显示 PDF 文件。但是为了帮助它一点,你至少应该告诉浏览器它是一个 PDF 文件。您可以通过发送内容类型标头来做到这一点:

header('Content-Type: application/pdf');

此行应在发送 PDF 内容之前执行。

【讨论】:

好的,谢谢您的回复。我这里有我的标题集...if (headers_sent()) $this->Error('Some data has already been output to browser, can\'t send PDF file'); header('Content-Transfer-Encoding: binary'); header('Cache-Control: public, must-revalidate, max-age=0'); header('Pragma: public'); header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); header('Content-Type: application/force-download'); header('Content-Type: application/octet-stream'); header('Content-Type: application/download'); header('Content-Type: application/pdf'); header('Content-disposition: attachment; filename="'.$name.'"'); 您多次覆盖 Content-Type。这似乎是一团糟。你只需要几个标题。 而且即使你想要多次使用同一个header,你也需要在header中指定false作为第二个参数,以防止覆盖前一个。【参考方案2】:

你可以使用它。可能会对你有所帮助。

包含文件:

include_once './mpdf/mpdf.php';

创建 mpdf 对象:

$pdf =new mPDF("","A4","","",10,10,10,10,6,3);

$mpdf->Writehtml('PDF文件中你想要的文本');

$pdf->输出('filename.pdf','I');

仍然无法查看文件:

定义标题的内容类型

header('Content-Type: application/pdf',charset=utf-8');

【讨论】:

以上是关于在 mpdf 中将 pdf 文件输出到浏览器的主要内容,如果未能解决你的问题,请参考以下文章

mPDF将本地文件+文件内联输出到浏览器

mPDF 错误:一些数据已经输出到浏览器

使用 mPDF 将 MathJax 方程输出到 PDF 时未正确对齐

使用 mpdf 时需要设置 HTTP Header 吗?

mPDF 错误:无法创建输出文件

“预览” mpdf 直接到浏览器