Internet Explorer 无法打开 pdf 字符串文件

Internet Explorer fails opening a pdf string file

我收到(来自我不管理的网络服务)一个包含 pdf 文件内容的字符串。

在客户端,我使用这个函数:

window.open('data:application/pdf;base64,'+encodeURI(TheStringWithThePdfContent));

像往常一样,它在每个浏览器中都有效,但 IE(在我的例子中是 11),它显示一条带有消息的警报:"Do you want to allow this website to open an app on your computer?"

如果我说不,将打开一个空白页面。

如果我说是,它会尝试打开一个 "data" 文件(我猜它是从 window.open 中的协议中读取的)并且因为它没有找到任何应​​用程序来做那,将我发送到 Microsoft 应用程序商店,它只是建议我下载 "iMusic"

当然完全没用。

我已经更改了我认为可能有用的所有 Internet 选项,none 有效。

有什么建议吗?

提前致谢,

更新 Reader 或 Acrobat

Adobe 每季度发布一次免费安全更新。确保将 Reader 或 Acrobat 的版本更新到最新版本。这些更新通常包括对常见问题的修复。下载最新的免费更新。

打开 Reader 或 Acrobat。 选择“帮助”>“检查更新”。

Acrobat 9 及更早版本:如果有可用的新更新,它会自动安装。

Acrobat X 和 XI:单击“更新”,然后单击“安装”。

Acrobat DC:继续下一步。 检查更新 出现“更新程序”对话框时,单击“下载”。

更新 Acrobat 下载完成后,单击 Acrobat 安装图标。在 Acrobat Updater window 中,单击安装。 更新就绪 安装完成后,重启电脑,再次测试PDF是否可以查看。

PDF 解决方案

刷新或重新加载页面

通常,只需在浏览器中刷新页面即可完全加载 PDF。

按住 Shift 键并按浏览器中的刷新或重新加载按钮。 尝试查看不同的 PDF

尝试查看不同的 PDF。例如,查看此示例表单是否显示在您的浏览器中。如果 Acrobat 或 Reader 可以打开示例表单,则其他 PDF 可能已损坏或 Web 服务器可能有问题。如果可能,联系管理该网站的个人或公司。

尝试查看硬盘上的 PDF

确定您的网络浏览器是否可以从本地硬盘而不是网络打开 PDF。对于此测试,您需要在计算机上保存一个 PDF。

在您的网络浏览器中,执行以下操作之一:

Mac OS:选择“文件”>“打开”(或“打开文件”)。 Windows:按 Control+O。 单击浏览。

(仅限 Windows)从“文件类型”菜单中选择“所有文件”。 选择所有文件 在您的计算机上找到一个 PDF,select 它,然后单击“打开”。 如果 PDF 打开,则您正在查看的网站可能有问题。联系管理该网站的个人或公司。

我找到了解决方案,我想与遇到相同问题的任何人分享。你可以在这里看到演示: 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");
}

我看到的 link 我的解决方案:https://viethoblog.wordpress.com/2016/08/30/loaddisplay-pdf-from-base64-string-bonus-ie-workaround/