Я получаю данные BLOB-объектов из API в следующем формате.
const data = 'JVBERi0xLjcNJeLjz9MKMzQgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL1BhZ2VzIDcgMCBSDQovTWV0YWRhdGEgMjYgMCBSDQo+Pg0KZW5kb2JqDQozNSAwIG9iag0KPDwgL1R5cGUgL09ialN0bSAvTGVuZ3RoIDQxMCAvRmlyc3QgMTQ1IC9OIDIxIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+DQpzdHJlYW0NCnicxdTBqhoxFAbgvTDv8L/A7ck5SSYT..............';
Я использовал приведенный ниже код для рендеринга PDF в IE, Chrome и Firefox.
openPDF(pdfData: string){
const byteArray = new Uint8Array(atob(pdfData).split('').map(char => char.charCodeAt(0)));
const url = window.URL.createObjectURL(new Blob([byteArray], {type: 'application/pdf'}));
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.open(url);
}else{
window.open(url);
}
}
Код работает вышенормально и открытие PDF в Chrome и Firefox, но тот же код не работает в IE 11, и отображение Доступ запрещен. ошибка в консоли.
Я пробовал код ниже, но выдает ошибку как прикрепленную,
let newBlob = new Blob([pdfData], {type: "application/pdf"});
window.navigator.msSaveOrOpenBlob(newBlob);
Я также пытался с iFrame, и он открывал пустой PDF.
Я пробовал ниже кодтакже, который загружает PDF в локальную систему, но при открытии файла выдает ту же ошибку, что и выше.
let newBlob = new Blob([pdfData], {type: "application/pdf"});
window.navigator.msSaveBlob(newBlob, 'one.pdf');