如何在<iframe>中打开PDF文件?

36

我想在一个iframe标签中打开pdf文件。我正在使用以下代码:

<a class="iframeLink" href="https://something.com/HTC_One_XL_User_Guide.pdf"> User guide </a>

这在Firefox中可以正常打开,但在IE8中无法打开。

有人知道如何使它也能在IE中工作吗?


5
  1. class 属性值应该用引号括起来。
  2. 那个 jQuery 风格的属性到底是什么?
  3. 你是通过什么方式指示这应该放在一个 iframe 中?
- David
5个回答

41
iframe 用于“呈现”PDF文件并不适用于所有浏览器,这取决于浏览器如何处理PDF文件。一些浏览器(例如Firefox和Chrome)有一个内置的PDF渲染器,可以将PDF文件内联显示,而一些老版本的浏览器(例如较旧的IE版本)则试图下载该文件。

因此,我建议尝试使用PDFObject,它是一个JavaScript库,可嵌入HTML文件中的PDF文件。它能很好地处理浏览器兼容性,并且大多数情况下也可以在IE8上工作。

在您的HTML中,您可以设置一个

来显示PDF文件:

<div id="pdfRenderer"></div>

然后,您可以编写 JavaScript 代码将 PDF 嵌入到该 div 中:

var pdf = new PDFObject({
  url: "https://something.com/HTC_One_XL_User_Guide.pdf",
  id: "pdfRendered",
  pdfOpenParams: {
    view: "FitH"
  }
}).embed("pdfRenderer");

5
没问题,那就是重点了。但它将PDF加载到对象中而不是iframe中。请参见http://pdfobject.com/markup/index.php。 - James P.
如果您不想在对象数据标记中公开PDF文件的src路径,该怎么办? - Base Desire
9
那么 src 路径也会在 iFrame 中显示,不是吗? - Sam
1
这个能加载图片文件吗? - Ronak Rathod

21

这是用于从<iframe>链接可通过HTTP(S)访问的PDF文件的代码:

<iframe src="https://research.google.com/pubs/archive/44678.pdf"
   width="800" height="600">

示例: http://jsfiddle.net/cEuZ3/1545/

编辑:您可以使用JavaScript从<a>标签(onclick事件)在运行时设置iFrame的SRC属性...

编辑2:显然这是一个错误(但有解决方法):

Adobe Reader 10.0中PDF文件无法在Internet Explorer中打开 - 用户将看到一个空白的灰色屏幕。 我该如何为我的用户解决此问题?


实际上,我是从IE调试器中复制的,所以jquerry和其他东西也出现了……否则,这个类也在代码中。而且它在Mozilla上运行良好。 - user1753210
我已经尝试了您提供的链接,但是如果您尝试运行它,它仍然会在IE中的iframe而不是Acrobat Reader中打开PDF。但是,如果您在Chrome或Mozilla中尝试相同的操作,则可以正常工作。但是我希望在IE中也能够在iframe中打开它。 - user1753210
在桌面浏览器中运行良好,但在移动浏览器中无法正常工作...您能帮我解决这个问题吗? - Gathole
定义"does not work fine"。是太大了吗?只需使用'vh'和'vw'代替'pixels',更多信息请阅读:https://dev59.com/YV0a5IYBdhLWcg3wW3ca#30512369 - Andrea Ligios

8

同时,确保 Web 服务器以 Content-Disposition = inline 的形式发送文件也非常重要。如果您自己读取文件并将其内容发送到浏览器,则可能不是这种情况:

在 PHP 中,它看起来像这样...

...headers...
header("Content-Disposition: inline; filename=doc.pdf");
...headers...

readfile('localfilepath.pdf')

0

-5
像这样做:记得关闭 iframe 标签。
<iframe src="http://samplepdf.com/sample.pdf" width="800" height="600"></iframe>

因为它只是下载PDF而不是预览。 - Vikas Kandari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接