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/
我收到(来自我不管理的网络服务)一个包含 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/