在IE 11中,使用<object>或<embed>标签嵌入PDF文件无法加载

11
我需要创建一个图片轮播,使用的插件是:Galleriffic插件 > http://www.twospy.com/galleriffic/。在图片轮播中,除了图片外,有时还需要显示PDF文件。为此,我将嵌入PDF<div>放在“<div class="caption">”中,可以在其中显示与图像相关的描述。对于带有PDF的滑块,请在此处查看完整代码:http://jsfiddle.net/Z99gr/2/。我正在尝试使用<object>或<embed>标签嵌入PDF,在Chrome和Firefox中运行良好,但在IE11中无法正常工作。我不明白缺少了什么,因为我已经创建了另一个只包含一个嵌入PDF的div的fiddle,在Chrome、Firefox和IE11中都能正常工作。

http://jsfiddle.net/dmAM3/1/

请查看此问题并尽快建议我在IE 11中缺少什么。谢谢!

请查看问题并尽快提出建议。这能保证您立即得到回复吗? - Samara
3个回答

25
我现在可以使用"<iframe>"标签将PDF文件嵌入IE。
我用<iframe>替换了"<object>"和"<embed>"标签,现在在Firefox、Chrome和IE三个浏览器中都可以正常工作。
在IE中有两种嵌入PDF的方法。 第一种方法:直接在<iframe>中调用PDF 下面是更新后的代码:
<div id="pdf">
   <iframe src="https://www.adobe.com/products/pdfjobready/pdfs/pdftraag.pdf" style="width: 100%; height: 100%;" frameborder="0" scrolling="no">
        <p>It appears your web browser doesn't support iframes.</p>
   </iframe>
</div>

第二种方法:如果浏览器没有PDF阅读器,则可以在<iframe>中调用包含<object>标记的HTML页面。

以下是第二个选项的代码:

    <div id="pdf">
          <iframe src="pdf.html" style="width: 100%; height: 100%;" frameborder="0" scrolling="no">
               <p>It appears your web browser doesn't support iframes.</p>
          </iframe>
   </div>

关于 "pdf.html" 的代码

<body>
    <object data="lorem.pdf" type="application/pdf">
        <p>It appears you don't have Adobe Reader or PDF support in this web browser. <a href="lorem.pdf">Click here to download the PDF</a>. Or <a href="http://get.adobe.com/reader/" target="_blank">click here to install Adobe Reader</a>.</p>
       <embed src="lorem.pdf" type="application/pdf" />
    </object>
</body>

这对我很有用!!!

以下是可行的示例代码:http://jsfiddle.net/stmjvz4f/

希望对其他人在未来有所帮助!


第一种方法是使用PDF的URL设置在src属性中。在第二种方法中,您直接使用文件。IE11似乎存在一个问题(安全限制),无法将URL或Blob传递给对象或嵌入元素。 - Stephan

2
我建议使用PDFObject这个Javascript库来将PDF文件嵌入到HTML文件中。它能很好地处理浏览器兼容性问题,很可能可以在IE8及以上版本的浏览器中正常工作。
在你的HTML文件中,你可以设置一个div来显示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");

我也试过那个...甚至这个也不行...PDF对象还有另一个问题是它会与ID冲突...正如我所说,我的是图像滑块...所以我必须展示一些PDFs,因此我得到了错误,因为有多个div具有相同的ID...而这个JS不支持类... - UID
谢谢关注这个问题,我尝试了PDFObject但它没有起作用,我只需使用<iframe>就可以做到...它起作用了...不需要插件。 - UID

1
不要在中放置"type"属性,只需在中放置,如下所示: 在IE11中,中的"type"属性会导致Adobe Reader出现权限错误。
<object data="mydocument.pdf">
<p><a href="mydocument.pdf">Download</a></p>
<embed type="application/pdf" src="mydocument.pdf" />
</object>

您不必将此放入iframe中。它可以显示控件,因此我认为它在幻灯片内部的效果可能不如预期。

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