IFrame с PDF embed работает в Chrome, но не в IE11 - PullRequest
0 голосов
/ 26 июня 2019

У меня есть следующий код:

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 или есть другая альтернатива?

Спасибо!

1 Ответ

1 голос
/ 26 июня 2019

Насколько я знаю, Internet Explorer не поддерживает использование URI DATA в качестве источника 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>');

        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...