【问题标题】:Internet Explorer fails opening a pdf string fileInternet Explorer 无法打开 pdf 字符串文件
【发布时间】:2017-08-21 14:10:06
【问题描述】:

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

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

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

像往常一样,它可以在除 IE 之外的所有浏览器中运行(在我的例子中是 11 个),它会显示一条带有以下消息的警报:“你想允许这个网站在你的计算机上打开一个应用程序吗?”

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

如果我说是,它会尝试打开一个“数据”文件(我猜它是从 window.open 中的协议读取的),并且因为它没有找到任何应​​用程序来执行此操作,所以将我发送到微软应用商店,它只是建议我下载“iMusic”

当然,完全没用。

我已经更改了所有我认为可能会有所帮助的 Internet 选项,但都不起作用。

有什么建议吗?

提前致谢,

【问题讨论】:

    标签: pdf base64 internet-explorer-11


    【解决方案1】:

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

    【讨论】:

    • 它确实有效!最后我更改了服务器端以更改页面的显示,Liferay(我正在接收和管理 pdf 流的地方)允许提供直接的 pdf 页面,但事实并非如此,这个解决方案本来是完美的!我已经用我自己的数据在不同的浏览器上进行了测试,一切正常。非常感谢您的宝贵时间!
    • 这真是太棒了:)我会给你+10
    • 如何使用以下文件集成此解决方案。 drive.google.com/file/d/0B-umo7G978pdalJrdVhibHU4Y0k/…
    • @DanielL.VanDenBosch 您能否尝试将文件 PDF“JVBERi0xLjUNCiW1tbW1DQoxIDAgb2 ...”的内容放入变量数据中。我希望它有效!
    • 非常感谢您。这是我能找到的唯一正确答案。
    【解决方案2】:

    更新 Reader 或 Acrobat

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

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

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

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

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

    更新 Acrobat 下载完成后,单击 Acrobat 安装图标。在 Acrobat 更新程序窗口中,单击安装。 更新已准备就绪 安装完成后,重启电脑,再次测试PDF看能否查看。

    PDF 解决方案

    刷新或重新加载页面

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

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

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

    尝试查看硬盘上的 PDF

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

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多