我使用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而不是代码的任何建议/想法。
答案 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;
编码愉快! :)