HTML嵌入式PDF iframe

use*_*470 48 html pdf iframe internet-explorer-8

我用标签嵌入了一个pdf文件.

<iframe id="iframepdf" src="files/example.pdf"></iframe>
Run Code Online (Sandbox Code Playgroud)

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

有没有人有任何关于为什么会发生这种情况的想法,如何修复它或者输入错误信息而不是让文件下载?

Adr*_*tti 70

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

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

保留< iframe>但不在其中显示PDF,它将填充由<object>标记组成的HTML页面.为PDF创建HTML包装页面,它应如下所示:

<html>
<body>
    <object data="your_url_to_pdf" type="application/pdf">
        <embed src="your_url_to_pdf" type="application/pdf" />
    </object>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当然,您仍需要在浏览器中安装相应的插件.如果您需要在移动设备上支持Safari,请查看此帖子.

1.为什么要<embed>在里面筑巢<object>?你会在这里找到答案.<embed>您可以(应该!)为您的用户(或内置查看器,请参阅下一段)提供自定义消息,而不是嵌套标记.如今<object>可以毫无后顾之忧地使用,<embed>毫无用处.

第2位.为什么是HTML页面?因此,如果不支持PDF查看器,则可以提供后备.内部查看器,纯HTML错误消息/选项等...

检查PDF支持很棘手,因此您可以为您的客户提供备用查看器,看看PDF.JS项目,它非常好但是桌面浏览器的渲染质量不如原生 PDF渲染器(我没有我认为,由于屏幕尺寸的原因,移动浏览器没有任何区别.

  • 对于那些努力在移动浏览器上获得一致行为的人,请看这里,这有助于我:http://stackoverflow.com/questions/7437602/how-to-display-a-pdf-via-android-web-browser-without-downloading -第一 (2认同)

mgu*_*utt 29

如果浏览器安装了pdf插件,则执行该对象,如果没有,则使用Google的PDF Viewer将其显示为纯HTML:

<object data="your_url_to_pdf" type="application/pdf">
    <iframe src="https://docs.google.com/viewer?url=your_url_to_pdf&embedded=true"></iframe>
</object>
Run Code Online (Sandbox Code Playgroud)

  • 这个就像魅力一样,但是我使用docs获得了大量的"No Preview Available" (2认同)

小智 16

试试这个。

<iframe src="https://docs.google.com/viewerng/viewer?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true" frameborder="0" height="100%" width="100%">
</iframe>
Run Code Online (Sandbox Code Playgroud)


Mud*_*bas 9

IFRAME

<iframe id="fred" style="border:1px solid #666CCC" title="PDF in an i-Frame" src="PDFData.pdf" frameborder="1" scrolling="auto" height="1100" width="850" ></iframe>
Run Code Online (Sandbox Code Playgroud)

宾语

<object data="your_url_to_pdf" type="application/pdf">
  <embed src="your_url_to_pdf" type="application/pdf" />
</object>
Run Code Online (Sandbox Code Playgroud)

  • 现在如何在该对象上触发打印,未定义打印? (3认同)
  • 这里的 iFrame 解决方案正是我需要的,用于显示由 MS MVC 后端服务生成并作为视图返回的 PDF。我尝试了所有其他解决方案,但由于某种原因,它们都不起作用。 (2认同)