【发布时间】:2020-03-02 15:27:57
【问题描述】:
我正在从 API 获取以下格式的 blob 数据。
const data = 'JVBERi0xLjcNJeLjz9MKMzQgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL1BhZ2VzIDcgMCBSDQovTWV0YWRhdGEgMjYgMCBSDQo+Pg0KZW5kb2JqDQozNSAwIG9iag0KPDwgL1R5cGUgL09ialN0bSAvTGVuZ3RoIDQxMCAvRmlyc3QgMTQ1IC9OIDIxIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+DQpzdHJlYW0NCnicxdTBqhoxFAbgvTDv8L/A7ck5SSYT..............';
我使用下面的代码在 IE、Chrome 和 Firefox 中渲染 PDF。
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);
}
}
以上代码在 Chrome 和 Firefox 中运行正常并打开 PDF,但在 IE 11 中无法运行相同的代码,并在控制台中显示 Access is denied. 错误。
我尝试了下面的代码,但给出了附加错误,
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');
【问题讨论】:
标签: cross-browser internet-explorer-11 microsoft-edge pdf-reader ie11-developer-tools