Mpdf不会从嵌入式Chrome浏览器下载pdf(而是显示pdf)

时间:2019-04-09 08:17:51

标签: javascript php mpdf

我使用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而不是代码的任何建议/想法。

2 个答案:

答案 0 :(得分:0)

ob_clean();
$mpdf->Output($filename.'.pdf', 'I');

它应该立即下载。

  

将文件内联发送到浏览器。如果可用,请使用该插件。   当选择“另存为”时,将使用$ filename给出的名称。   生成PDF的链接上的选项

答案 1 :(得分:0)

这花了我很多时间,所以如果有人需要,我会在这里发布答案。

// 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;

编码愉快! :)