【问题标题】:PDF redirection shows blank on ChromePDF 重定向在 Chrome 上显示为空白
【发布时间】:2018-02-10 16:40:25
【问题描述】:

我遇到了这个我一辈子都无法解决的问题。

我有一个简单的php脚本可以重定向到pdf,代码如下:

$file = "url/to/file";    
header("Pragma: public");

header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Description: File Transfer");
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="somefile.pdf"');
header('Content-Transfer-Encoding: binary');

readfile($file);
exit();

如果我直接在浏览器选项卡中尝试,它可以工作,它会连接 Chrome 的 pdf 插件并向我显示。如果我尝试将其放在另一个页面上的链接上,或者尝试通过 javascript 中的 window.open 打开它,它会显示一个空白页面。这只发生在 Chrome 和 Safari 中,Firefox 和 Edge 显示它很好。在有人问之前,我已经尝试过使用和不使用缓存和内容描述标头,这是我从我在这里找到的答案中得到的,这只是我拥有的最后一个版本。

有什么想法吗?

提前致谢

编辑

我忘了提到即使我重新加载页面,问题仍然存在于空白选项卡上。我检查了 devtools 上的“网络”选项卡,它们显示机器人请求和响应(重定向和直接)的相同结果,但重定向不起作用。此外,任何一个都没有任何错误。

另外,我在没有 exit() 的情况下尝试过,没有任何改变。

【问题讨论】:

  • 您还需要做些什么吗?您正在将文件读入内存然后退出代码。
  • @jeff php readfile 读取和输出:php.net/manual/en/function.readfile.php Reads a file and writes it to the output buffer
  • @KarlReid 好吧,你去 - 每天学习新东西 :-) (在张开大嘴之前请注意自检手册)。
  • 您能否检查一下开发工具,看看是否有任何错误,或者“网络”选项卡中的请求/响应是什么样的?
  • @jeff 我也试过没有exit(),没有骰子。

标签: php google-chrome pdf redirect


【解决方案1】:

正如 ylva 在 cmets 中提到的,对于任何搜索此内容的人,都可以在这里找到答案

Open PDF from Chrome IFRAME failed with default PDF viewer

主要的是,Chrome 的 PDF 查看器将 PDF 作为应用程序嵌入,因此如果指向 PDF 文件的链接来自 iframe,并且此 iframe 具有沙盒属性,则 chrome 不会让它运行,您要么必须删除沙盒属性或必须安装您自己的 PDF 查看器。所以它与 PHP 代码本身无关。

干杯

【讨论】:

  • 您愿意扩展“...安装您自己的 PDF 查看器...”这一点吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 2014-10-15
  • 2020-01-30
  • 2013-01-01
  • 2015-03-12
  • 1970-01-01
  • 2019-10-23
相关资源
最近更新 更多