【问题标题】:IFrame with PDF embed working in Chrome, but not in IE11带有 PDF 嵌入的 IFrame 在 Chrome 中工作,但在 IE11 中不工作
【发布时间】:2019-11-08 08:24:40
【问题描述】:
我有以下代码:
var pdfWindow = window.open();
pdfWindow.document.write('<iframe src="data:application/pdf;base64,BASE64STRING" style="width: 100%; height: 100%;" frameborder="0" scrolling="no"></iframe>');
这在 Google Chrome 中可以正常工作,但在 IE11 中显示的是空白页。
有没有办法让它在 IE 中运行,或者有其他替代方法?
谢谢!
【问题讨论】:
标签:
html
google-chrome
pdf
internet-explorer
iframe
【解决方案1】:
据我所知,Internet Explorer 不支持使用 DATA URI 作为 IFRAME 的来源。
作为替代解决方法,在 IE 浏览器中,我建议您可以先下载 PDF 文件,然后使用 IE 浏览器显示 PDF 文件。
您可以参考以下代码:
function myfunction() {
var data = "BASE64STRING";
var fileName = "test.pdf";
//For IE using atob convert base64 encoded data to byte array
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
var byteCharacters = window.atob(data);
var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var blob = new Blob([byteArray], { type: 'application/pdf' });
window.navigator.msSaveOrOpenBlob(blob, fileName);
} else {
// Directly use base 64 encoded data for rest browsers (not IE)
var base64EncodedPDF = data;
var pdfWindow = window.open();
pdfWindow.document.write('<iframe src="data:application/pdf;base64,' + base64EncodedPDF+'" style="width: 100%; height: 100%;" frameborder="0" scrolling="no"></iframe>');
}
}