我正在尝试根据从服务器返回的响应生成 PDF 文件并在新选项卡中打开该文件。它在所有浏览器的桌面上运行良好,但在 safari 浏览器中的苹果设备(iphone + ipad)中存在问题。
这是代码片段:
if (responseType = base64 encoded string like JVBERi0xLjUKJeLjz9MKMSAwI....) {
const binaryString = window.atob(fileResponseData);
const bytes = new Uint8Array(binaryString.length);
const binaryToBlob = bytes.map((byte, i) => binaryString.charCodeAt(i));
const blob = new Blob([binaryToBlob], { type: 'application/pdf' });
this.downloadFile(blob, fileName);
} else {
// blob response like %PDF-1.7 %âãÏÓ5 0 obj....
const blob = new Blob([fileResponseData], { type: 'application/pdf' });
this.downloadFile(blob, fileName);
}
这就是我下载文件的方式
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, fileName);
return;
}
const url = (window.URL || window.webkitURL).createObjectURL(blob);
window.open(url, '_blank');
我知道有关于这个主题的相关文章,但它们并没有解决我的问题。事实上,我想出了上面提到这些文章本身的代码,但我仍然面临苹果设备的问题。一旦我单击按钮生成文件并在新选项卡中显示,苹果设备上没有任何反应,但其他设备工作正常。