需要在 IE 窗口中打开 blob/PDF

Posted

技术标签:

【中文标题】需要在 IE 窗口中打开 blob/PDF【英文标题】:Need to open blob/PDF in IE window 【发布时间】:2016-03-30 03:36:29 【问题描述】:

我的打字稿中有以下代码,用于调用 Web api 方法并检索 PDF 格式的二进制字节数组 (blob)。我的用户要求是在新窗口中打开 PDF。

$scope.selectRow = (itemImageNumber: string, printProcessId: string, printXmlId: string) => 
        itemService.GetOutgoingDocument($scope.item.ItemId, itemImageNumber, printProcessId, printXmlId).success((response) => 
            var file = new Blob([response],  type: 'application/pdf' );
            var fileUrl = URL.createObjectURL(file);
            //$scope.outDocContent = $sce.trustAsResourceUrl(fileUrl);
            var win = window.open($sce.trustAsResourceUrl(fileUrl));
            win.focus();
        ).error(() => 
            var message = 
                "The document you selected can’t be displayed at this time. Please call Customer Service at xxx-xxx-xxxx for assistance.";
            $rootScope.$broadcast("app-message", 
                type : "danger",
                message : message
            );
        );
    

此代码在 Chrome 中运行良好。文档按预期打开。然而,IE 会询问“你想允许这个网站在你的计算机上打开一个应用程序吗?”如果允许,请告诉我“没有安装任何应用程序来打开这种链接 (blob)”。

关于如何在新选项卡中打开它或将 blob 保存为文件作为最后手段的任何想法?

【问题讨论】:

猜想:有一些看起来相似的问题可能会有所帮助:***.com/questions/28196065/…, ***.com/questions/24007073/… 特别是这个 IE 特定的行可能很有趣:window.navigator.msSaveOrOpenBlob(blobObject, fileName); 【参考方案1】:

它在 Chrome 和其他普通浏览器中运行的原因:它们内部安装了 pdf 预览器。

为什么它在IE中不起作用:因为在架构中如果IE应该在操作系统上安装一些PDF阅读程序;例如,如果您安装了 Adob​​e Acrobat,则可以毫无问题地打开它。

我可以推荐你使用:pdf.js/。

【讨论】:

以上是关于需要在 IE 窗口中打开 blob/PDF的主要内容,如果未能解决你的问题,请参考以下文章

IE无法在网页中打开AVI和WAV格式音乐

VBA IE 在对话框窗口中批准下载

为啥我正在用的窗口或者打开的页面会自动关闭?

如何在Js脚本中,默认打开一个全屏的窗口,

启动IE浏览器弹出“用户账户控制”(UAC)窗口,怎么取消。

存储在 Microsoft SQL 中的 Python blob PDF - 转换回 PDF