【问题标题】:PDF Reader not installed on browser - Wish to Auto download浏览器上未安装 PDF 阅读器 - 希望自动下载
【发布时间】:2014-07-08 21:01:10
【问题描述】:
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript" src="gistfile1.js"></script>
</head>

<body>
    <p id="divPDF">Can't see the PDF?</p>
</body>

<script type="text/javascript">
    var info = getAcrobatInfo();
    if (info.acrobat == false){
        window.location = "empty.pdf";
    } else {
        document.getElementById("divPDF").innerHTML = "<object data='empty.pdf' type='application/pdf' width='100%' height='100%'><p class='helpContent'>Can't see the PDF? Try <a href='empty.pdf' download='empty.pdf'>downloading the file</a>. If you're still having trouble, <a href='/contactUs.jsp'>contact us</a> or email us directly at <a href='mailto:support@guitarinstructor.com'>support@guitarinstructor.com</a>.</p></object>";
    }
</script>

</html>

这就是我正在做的事情。如果 getAcrobatInfo 为 TRUE,则显示 PDF。 如果 getAcrobat 返回 FALSE,则自动下载 PDF。

我认为这适用于 window.location = "URL OF THE PDF",但我的浏览器仍会尝试显示它。

如果用户的浏览器没有 PDF 阅读器插件,我是否可以实现任何 javascript 或 jQuery 来强制自动下载?

【问题讨论】:

  • 据我所知,浏览器将始终尝试打开您导航到的内容(如果可以)。您需要更改来自服务器的响应的标头,以使浏览器认为它无法处理它,但这不能使用客户端脚本来完成。示例:stackoverflow.com/questions/8590543/…

标签: javascript jquery pdf download conditional


【解决方案1】:

通常您必须将Content-disposition 标头设置为attachment,以鼓励浏览器下载文件而不是显示文件。如果你能做到这一点,并且你的客户端插件检测工作,你可以编辑你的服务器端代码,根据你想要发送的配置来使用不同的 URL,并在你的 object src 属性或 location.replace 参数中使用它。

此外,在 HTML5 中,&lt;a&gt; 标记有一个 download 属性,并带有一个可选的文件名作为属性值。并非所有浏览器都支持此功能。

<a href="path/to/file.pdf" download="filename.pdf">Download</a>

请注意,一种非常常见的做法是使用带有小简介的单个链接,通知用户如何下载文件(例如,使用鼠标右键)。

【讨论】:

  • 我想了很多,但被问到的是查看本机插件是否未激活,页面是否会简单地重定向到 PDF 本身。看这个,当浏览器一开始无法查看文件时,指向该文件没有多大意义。
猜你喜欢
  • 2011-12-31
  • 2011-08-04
  • 1970-01-01
  • 2011-09-09
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多