Mpdf 不从内联 chrome 浏览器下载 pdf(但显示 pdf)
Posted
技术标签:
【中文标题】Mpdf 不从内联 chrome 浏览器下载 pdf(但显示 pdf)【英文标题】:Mpdf not downloading pdf from inline chrome browser (but displaying pdf) 【发布时间】:2019-04-09 08:17:50 【问题描述】:我使用 mpdf 在浏览器中显示 pdf,它工作正常。
pdf 文件已显示在浏览器中,但当用户单击下载按钮时,php 代码已下载,但未显示 pdf 文件。
下面是我的代码
$mpdf=new mPDF( );
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0;
$mpdf->Writehtml($html,2);
$mpdf->showImageErrors = true;
$filename='Test';
$mpdf->Output($filename.'.pdf', 'I');
我不能对 mpdf 使用如下所示的 D 或 F,因为用户必须首先在浏览器中查看 pdf,然后他必须根据自己的兴趣下载。
$mpdf->Output($filename.'.pdf', 'D');
关于如何从内联浏览器下载 pdf 而不是代码的任何建议/想法。
【问题讨论】:
它不会在 Chrome 中下载。 @Bira,它有效....它在某些页面中对我有用 显示响应的 HTTP 标头。它们很可能在途中的某个地方(再次)被覆盖。 【参考方案1】:ob_clean();
$mpdf->Output($filename.'.pdf', 'I');
它应该立即下载。
将文件内联发送到浏览器。如果可用,则使用该插件。 选择“另存为”时使用 $filename 给出的名称 生成 PDF 的链接上的选项
【讨论】:
【参考方案2】:这花了我很多时间,所以如果有人需要,我会在这里发布我的答案。
// filename
$mpdf->Output($filename.'.pdf');
// You need to write this
$file = $filename.'.pdf';
$response = new \Zend\Http\Response\Stream();
$response->setStream(fopen($file, 'r'));
$response->setStatusCode(200);
$response->setStreamName(basename($file));
$headers = new \Zend\Http\Headers();
$headers = addHeaders(array(
'Content-Disposition' => 'attachment; filename"'.basename($file).'"',
'Content-Type' => 'application/pdf',
'Content-Length' => filesize($file),
'Expires' => '@0',
'Cache-Control' => 'must-revalidate',
'Pragma' => 'public'
));
$response->setHeaders($headers);
return $response;
玩得开心编码! :)
【讨论】:
以上是关于Mpdf 不从内联 chrome 浏览器下载 pdf(但显示 pdf)的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress:如何重定向到空白页面以便内联/浏览器 PDF 创建可以工作?
使用 mPDF 错误在 codeigniter 3 中将 html 导出并下载为 pdf 错误:找不到类“Mpdf\Mpdf”