在Internet Explorer 11中查看PDF

时间:2019-02-05 12:05:21

标签: angularjs internet-explorer

我们正在调用asp.net webapi在html对象中显示PDF,在Chrome和Firefox中可以完美地查看PDF。在Internet Exporer 11中,不会查看pdf,而是抛出Error

以下是我们的消息来源 HTML

    <object data="{{piData}}" type="application/pdf" style="width: 100%; height: 400px;"></object>

AngularJs

$scope.piData = null;
    $http.get('www.mydomain/pi', {
        params: {
            "piId": pPiId
        },
        responseType: 'arraybuffer'
    }).then(function (response) {

        var data = response.data;
        var file = new Blob([data], { type: 'application/pdf' });
        var fileURL = URL.createObjectURL(file);
        $scope.piData = $sce.trustAsResourceUrl(fileURL);
    }, function (err) {
        alert(err.data);
    });

如何解决此错误

1 个答案:

答案 0 :(得分:0)

    $scope.piData = null;
    $http.get('www.mydomain/pi', {
        params: {
            "piId": pPiId
        },
        responseType: 'arraybuffer'
    }).then(function(response) {
     if (navigator.msSaveBlob) {
        var data = response.data;
        var binary = atob(data);
        var len = binary.length;
        var buffer = new ArrayBuffer(len);
        var view = new Uint8Array(buffer);
        for (var i = 0; i < len; i++) {
            view[i] = binary.charCodeAt(i);
        }
        var blob1 = new Blob([view], {
            type: 'application/pdf'
        });
        navigator.msSaveBlob(blob1, data);
}else {
 var file = new Blob([data], { type: 'application/pdf' });
    var fileURL = URL.createObjectURL(file);
    $scope.piData = $sce.trustAsResourceUrl(fileURL);
}
    }, function(err) {
        alert(err.data);
    });