我收到(来自我未管理的网络服务)一个包含pdf文件内容的字符串。
在客户方面,我使用此功能:
window.open( '数据:应用/ PDF; BASE64,' +是encodeURI(TheStringWithThePdfContent));
像往常一样,它适用于每个浏览器,但IE(在我的情况下为11),它会显示一条警告:“你想让这个网站在你的计算机上打开一个应用程序吗?”
如果我拒绝,则会打开一个空的白页。
如果我说是,它会尝试打开一个“数据”文件(因为它从window.open中的协议读取,我猜),因为它没有找到任何应用程序来执行此操作,请将我发送给微软应用程序商店,它建议我下载“iMusic”
当然完全没用。
我已经改变了所有我猜想可以提供帮助的互联网选项,但都没有。
有什么建议吗?
提前致谢,
答案 0 :(得分:29)
我找到了解决方案,我想分享有同样问题的人。你可以在这里看到演示: 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");
}
我在解决方案中看到的链接:https://viethoblog.wordpress.com/2016/08/30/loaddisplay-pdf-from-base64-string-bonus-ie-workaround/
答案 1 :(得分:-2)
更新Reader或Acrobat
Adobe每季度发布免费安全更新。确保将您的Reader或Acrobat版本更新到最新版本。更新通常包括对常见问题的修复。下载最新的免费更新。
打开Reader或Acrobat。 选择帮助&gt;检查更新。
Acrobat 9及更早版本:如果有新的更新,则会自动安装。
Acrobat X和XI:单击“更新”,然后单击“安装”。
Acrobat DC:继续下一步。 检查更新 出现“更新程序”对话框时,单击“下载”。
更新Acrobat 下载完成后,单击Acrobat安装图标。在Acrobat Updater窗口中,单击“安装”。 更新就绪 安装完成后,重新启动计算机并再次测试PDF以查看是否可以查看它。
PDF解决方案
刷新或重新加载页面
通常,只需在浏览器中刷新页面即可完全加载PDF。
按住Shift键并按浏览器中的“刷新”或“重新加载”按钮。 尝试查看其他PDF
尝试查看其他PDF。例如,查看此示例表单是否显示在浏览器中。如果Acrobat或Reader可以打开示例表单,则其他PDF可能会损坏或Web服务器可能出现问题。如果可能,请联系管理网站的个人或公司。
尝试在硬盘上查看PDF
确定您的网络浏览器是否可以从本地硬盘驱动器而不是从网络打开PDF。对于此测试,您需要在计算机上保存PDF。
在您的网络浏览器中,执行以下操作之一:
Mac OS:选择文件&gt;打开(或打开文件)。 Windows:按Control + O. 单击“浏览”。
(仅限Windows)从“文件类型”菜单中,选择“所有文件”。 选择所有文件 在计算机上找到PDF,选择它,然后单击“打开”。 如果PDF打开,您正在查看的网站可能有问题。联系管理网站的个人或公司。