Невозможно открыть URL-адрес BLOB-объекта в IE с помощью диалогового окна печати - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь открыть файл PDF с диалоговым окном печати в IE Edge, он отлично работает в Chrome, но не в IE

Код MVC для возврата файла с помощью инструмента Evo Pdf:

var restClient = new RestClient(Request.Url.Scheme + "://" + Request.Url.Authority);
var restResponse = restClient.Execute(request);
if (restResponse.StatusCode == HttpStatusCode.OK)
 {
     htmlModel.HtmlString = restResponse.Content;
     byte[] pdfBytes = PdfUtil.GetEvoPdfBytes(htmlModel);
     if (pdfBytes != null)
        {
             return File(pdfBytes, System.Net.Mime.MediaTypeNames.Application.Pdf, htmlModel.PdfName + ".pdf");
        }
 }

Javascript код для открытия файла с диалоговым окном печати, приведенный ниже код работает в Chrome, но не в IE:

var req = new XMLHttpRequest();
        req.open("POST", "/api/HtmlToPdf", true);
        req.setRequestHeader("Content-Type", "application/json");
        req.responseType = "blob";

        req.onload = function (event) {
            var blob = req.response;
            console.log(blob.size);
            var lin = window.URL.createObjectURL(blob);
            // Works in chrome
            var mywindow = window.open(lin, "_blank");
            mywindow.focus();
            mywindow.print();
        };
        req.send(JSON.stringify(
            {
                htmlModel: {
                    ElementSelector: "#div",
                    PageOrientation: "Portrait",
                    PdfName: "abc"
                }
            }));

1 Ответ

0 голосов
/ 27 сентября 2019

IE11 не поддерживает URL.createObjectURL () .Таким образом, ваш код не будет работать в браузере IE, и вы не сможете открыть большой двоичный объект с помощью диалогового окна печати. ​​

В качестве обходного пути вам необходимо использовать msSaveBlob или msSaveOrOpenBlob для браузера Internet Explorer.

Эти методы позволяют пользователю сохранить файл на клиенте, как если бы файл был загружен из Интернета.

var blobObject = new Blob(["This is sample text..."]);

window.navigator.msSaveOrOpenBlob (blobObject, 'msSaveOrOpenBlob_testFile.txt');  

Ссылки:

(1) Загрузка BLOB-объекта из HTTP URL в IE 11

(2) Сохранение файлов локально с использованием Blob и msSaveBlob

(3) Загрузка BLOB-файлов не работает в IE

...