HTML 嵌入式 PDF iframe

新手上路,请多包涵

我已经使用标签嵌入了一个 pdf 文件。

 <iframe id="iframepdf" src="files/example.pdf"></iframe>

这在 Chrome、IE8+、Firefox 等中运行良好,但出于某种原因,当某些人在 IE8 中查看它时,文件正在下载而不是嵌入。我知道这个浏览器已经过时了,但它是我办公室的标准浏览器,因此,网站必须为此设计。

有没有人知道为什么会发生这种情况,我该如何解决它或者发出错误消息而不是让文件下载?

原文由 user2931470 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 780
1 个回答

可能 是没有安装Adobe Reader插件下载的。在这种情况下,IE(无论哪个版本)不知道如何呈现它,它只会下载文件(例如,Chrome 有自己的嵌入式 PDF 呈现器)。

如果您想 尝试 检测 PDF 支持,您 _可以_:

  • !!navigator.mimeTypes["application/pdf"]?.enabledPlugin (现已弃用,可能仅在某些浏览器中受支持)。
  • navigator.pdfViewerEnabled (实时标准,它可能会改变,目前没有得到广泛支持)。

2021 :现在原来的答案肯定已经过时了。除非你需要支持相对较旧的浏览器,否则你应该简单地使用 <object> (最终有后备)并保留它。


就是说。 <iframe> 不是显示 PDF 的最佳方式(不要忘记与移动浏览器的兼容性,例如 Safari)。某些浏览器将始终在外部应用程序(或另一个浏览器窗口)中打开该文件。我发现的最佳和最兼容的方式有点棘手,但适用于我尝试过的所有浏览器(甚至已经过时):

保留您的 < iframe> 但不要在其中显示 PDF,它将填充一个包含 <object> 标签的 HTML 页面。为您的 PDF 创建一个 HTML 包装页面,它应该 如下 所示:

 <html>
<body>
    <object data="your_url_to_pdf" type="application/pdf">
        <div>No online PDF viewer installed</div>
    </object>
</body>
</html>

当然,你还需要在浏览器中安装相应的插件。另外,如果您需要在移动设备上支持 Safari,请查看 这篇文章

为什么是 HTML 页面?因此,如果不支持 PDF 查看器,您可以提供回退。内部查看器、纯 HTML 错误消息/选项等…

检查 PDF 支持很棘手,以便您可以为客户提供备用查看器,看看 PDF.JS 项目;它非常好,但渲染质量 - 对于桌面浏览器 - 不如 本机 PDF 渲染器(我认为由于屏幕尺寸,我没有看到移动浏览器有任何差异)。

原文由 Adriano Repetti 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题