在 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 文件输出到浏览器的主要内容,如果未能解决你的问题,请参考以下文章