【问题标题】:Mpdf not downloading pdf from inline chrome browser (but displaying pdf)Mpdf 不从内联 chrome 浏览器下载 pdf(但显示 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 标头。它们很可能在途中的某个地方(再次)被覆盖。

标签: javascript php mpdf


【解决方案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;
    

    玩得开心编码! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      • 2020-03-25
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      相关资源
      最近更新 更多