Angular-下载并显示PDF

Angular - Download and Display PDF

本文关键字:PDF 显示 下载 Angular-      更新时间:2023-09-26

当前使用

https://github.com/stranger82/angular-utf8-base64

https://github.com/eligrey/FileSaver.js/

解码一个base64编码的PDF文件,我正在从一个剩余的API获取。

它的解码和下载都很好,但当我尝试查看它时,它是空白的。

我看过

AngularJS:在角度应用中显示blob(.pdf)

并尝试添加

responseType: 'arraybuffer'

然而,对于我的get请求,这会导致响应为null,并且没有从get请求返回任何数据。

其他文件似乎可以下载并渲染。

如有任何帮助,我们将一如既往地不胜感激!

代码:

          function save() {
            var fileContent = base64.decode(response.File.fileContent);
            var file = new Blob([fileContent], {type: response.File.contentType});
            saveAs(file, response.File.name);
          }
        $http.get(url.join('')).success(function(response) {
            save(response);
        }).error(function(error) {
            console.log('The following error has occured' + error);
        });

如果API Rest检索字节数组,您只需使用此js函数

OBS:data.payload必须是字节数组调用函数:下载服务.下载(data.payload,'downloadExcel','xls');下载服务。下载(data.payload,'downloadPDF','pdf');

(function() {
    'use strict';
    angular
        .module('fileUtils')
        .service('DownloadService', DownloadService);
    DownloadService.$inject = ['$window'];
    function DownloadService($window) { // jshint ignore:line
        this.download = function (fileBytes, name, type) {
            var fileName = '';
            if (name) {
                 fileName = name + '.' + type;
            } else {
                 fileName = 'download.' + type;
            }
            var byteCharacters = atob(fileBytes);
            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 file = new Blob([byteArray], { type: 'application/' + type });
            if (window.navigator && window.navigator.msSaveOrOpenBlob) {
                window.navigator.msSaveOrOpenBlob(file, fileName);
            } else {
                //trick to download store a file having its URL
                var fileURL = URL.createObjectURL(file);
                var a = document.createElement('a');
                a.href = fileURL;
                a.target = '_blank';
                a.download = fileName;
                document.body.appendChild(a);
                a.click();
            }
        };
    }
})();