【问题标题】: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>');
    
            }
        }
    

    【讨论】:

    • 非常感谢您的回答和建议!
    猜你喜欢
    • 2011-10-16
    • 1970-01-01
    • 2014-10-04
    • 2020-05-08
    • 2016-04-18
    • 2020-01-23
    • 2017-05-10
    • 2021-08-12
    • 2016-07-19
    相关资源
    最近更新 更多