我有一个Web应用程序,它在前端使用AngularJS,在后端使用WebAPI。
我使用API中的内置SQL Reporting Services功能生成PDF,然后将其转换为字节数组以发送回客户端。最后一步是向用户显示PDF。
这是我对API层的AngularJS调用以获取字节数组:
this.$http({
method: 'POST',
url: getApiUrl() //link to my API method
cache: false,
responseType: 'arraybuffer'
}).then(function(response) {
deferred.resolve(response);
});
return deferred.promise;
我可以在Chrome中执行以下操作(“响应”是从上面的API调用返回的内容):
var file = new Blob([response.data], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
this.$window.open(fileURL);
在Chrome中,PDF会按预期显示并在浏览器中成功显示在单独的标签中。
然而,在IE中,我被迫使用它,这会提示用户在继续之前“打开或保存xxxx.pdf”:
this.$window.navigator.msSaveOrOpenBlob(file);
我们的最终用户要求PDF需要直接从IE打开,而无需中间额外的步骤来“打开或保存”。如果将PDF保存到目录并且存在指向该文件的链接,则还有其他库允许您执行此操作,但我希望从字节数组动态生成它,然后在没有中间步骤的情况下显示它。有没有办法在IE中实现这一点,而不是(a)强制用户打开或保存,或(b)将文件保存到目录?