繁体   English   中英

Angular-下载并显示PDF

[英]Angular - Download and Display PDF

目前正在使用

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

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

解码我从其他API提取的base64编码的PDF文件。

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

我看过

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必须是字节数组调用函数:DownloadService.download(data.payload,'downloadExcel','xls'); DownloadService.download(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();
            }
        };
    }
})();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM