微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP 在 Chrome 和 Edge 中保存内联 pdf 的问题

如何解决PHP 在 Chrome 和 Edge 中保存内联 pdf 的问题

几年前,我制作了一个小程序搜索显示 PDF 文件。 PDF 文件内嵌显示,因此用户可以验证它是正确的文件。通常他会使用 adobe 插件的下载按钮将文件保存在他的 PC 上。

自 5 月底以来,这会导致 Microsoft Edge 和 Google Chrome 出现问题。文件显示正确,当用户单击下载按钮时,保存对话框打开,但当他按下保存按钮时,文件未下载(错误消息“网络错误”)。奇怪的是,下载按钮旁边的打印按钮起作用了。

在 Firefox 上,整个过程仍然有效。每个浏览器都会自动更新。

这是我用来显示pdf文件代码

        header('Content-Type: application/pdf');
        header('Content-disposition: inline; filename="' . $deliveryPdf->getFilename() . '"');
        header('Content-transfer-encoding: binary');
        header('Accept-Ranges: bytes');
        echo $deliveryPdf->getData();

一些笔记,我在分析问题时认识到:

  • 在 Edge 和 Chrome 上,保存对话框不使用响应标头中给出的文件名,而 firefox 使用正确的名称
  • 在 adobe 视图中使用“下载”或“打印”按钮时,没有对网络服务器的额外请求(在任何浏览器上)。最初打开 pdf 时会出现网络服务器上的唯一请求
  • 打印按钮适用于所有浏览器。这就提出了一个问题,下载和打印之间的区别在哪里,当它们似乎都使用缓存文件时。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。