2014-10-31 44 views
0

基本上,我遇到的问题是我向服务器查询以返回以JSON格式返回的pdf文件。从JSON创建可下载的pdf文件

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

“的Adobe阅读器无法打开‘检验.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(); 
}); 
... 

UPDATE

从角和相同的代码使用$ 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(); 
     }); 
... 

回答

2

PDF文件是不一样的文字(或JSON)文件,请尝试使用图书馆像JSPDF使客户端双面PDF fi LES。

+0

我需要的是一种服务或脚本,它可以帮助我管理一个json对象,并将其作为pdf下载,而不是外部网站... – 2014-10-31 15:37:57

+0

@JoeLewis这是一个脚本,外部网站是由开发人员制作的它。检查:源代码https://github.com/MrRio/jsPDF。 (/dist/jspdf.min.js) – Paradoxis 2014-10-31 15:56:47