从JSON创建可下载的pdf文件

时间:2014-10-31 15:13:41

标签: javascript html json angularjs

基本上,我遇到的问题是我向服务器询问是否返回以JSON格式返回的pdf文件。

我试图创建一个HTML元素来自动下载pdf(这不是问题),问题是无法打开下载的pdf,因为它失败并报告错误,例如在Adobe Reader中:

  

“Adobe读者无法打开'test.pdf',因为要么不是   支持的文件类型或因为文件已损坏(例如,   它是作为电子邮件附件发送的,未被正确解码)“

我正在使用AngularJS对服务器进行ajax调用以获取JSON对象,然后尝试格式化并下载它:

...
var pdf = pdfservice.get({id:pdfId});
console.log(pdf);
pdf.$promise.then(function(data){
    var element = angular.element('<a/>');
    element.attr({
            href: 'data:attachment/pdf;charset=utf-8,' + encodeURI(data),
            target: '_self',
            download:'test.pdf'
    })[0].click();
});
...

更新

使用Angular中的$ http服务并使用相同的代码,它会下载pdf但它是空的,所以可能是编码或格式化json对象的问题......

...
$http({ method: 'GET', url: 'http://www.testweb.com/pdf/1')
     .success(function(data) {
             console.log(data);
             var element = angular.element('<a/>');
             element.attr({
                     href: 'data:attachment/pdf;charset=utf-8,' + encodeURI(data),
                     target: '_self',
                     download:'test.pdf'
             })[0].click();
       });
...

1 个答案:

答案 0 :(得分:2)

PDF文件与文本(或json)文件不同,请尝试使用JSPDF等库来制作客户端PDF文件。