Mar*_*rta 4 pdf base64 internet-explorer-11
我收到(来自我不管理的网络服务)带有pdf文件内容的字符串.
在客户端,我使用此功能:
window.open( '数据:应用/ PDF; BASE64,' +是encodeURI(TheStringWithThePdfContent));
像往常一样,它适用于每个浏览器,但IE(在我的情况下为11),它会显示一条警告:"你想让这个网站在你的计算机上打开一个应用程序吗?"
如果我拒绝,则会打开一个空的白页.
如果我说是,它会尝试打开一个"数据"文件(因为它从window.open中的协议中读取,我猜),因为它没有找到任何应用程序来执行此操作,请将我发送到Microsoft应用程序商店,这只是建议我下载"iMusic"
当然完全没用.
我已经改变了所有我猜想可以帮助的互联网选项,没有一个可行.
有什么建议吗?
提前致谢,
San*_*ika 30
我找到了解决方案,我想分享有同样问题的人.你可以在这里看到演示:https: //jsfiddle.net/quangminh_ln/hy36tnt6/
'use strict';
var data = "...Your PDF base64 string...";
var fileName = "your_file_name";
if (window.navigator && window.navigator.msSaveOrOpenBlob) { // IE workaround
var byteCharacters = 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 { // much easier if not IE
window.open("data:application/pdf;base64, " + data, '', "height=600,width=800");
}
Run Code Online (Sandbox Code Playgroud)
我在解决方案中看到的链接:https://viethoblog.wordpress.com/2016/08/30/loaddisplay-pdf-from-base64-string-bonus-ie-workaround/
| 归档时间: |
|
| 查看次数: |
13250 次 |
| 最近记录: |