当前位置: 移动技术网 > IT编程>脚本编程>AngularJs > 如何在Angular.JS中接收并下载PDF

如何在Angular.JS中接收并下载PDF

2018年05月08日  | 移动技术网IT编程  | 我要评论

介绍

jspdf 是一个使用javascript语言生成pdf的开源库。你可以在firefox插件,服务端脚本或是浏览器脚本中使用它。

客户端safari 和 iphone safari 支持得最好,其次是opera和windows下的firefox 3等。ie暂不支持。

示例代码:

var doc = new jspdf();
doc.text(20, 20, 'hello world.');
doc.save('test.pdf');

服务器端可以完美运行。

jspdf使用方便,但是不支持中文

pdfmake支持中文,但是由于还需要引入font文件,导致文件体积可到十几m,不适合前端。

pdfmake 是基于客户端服务器的 pdf 打印解决方案,完全基于 javascript 开发。提供强大的排版引擎

安装:

client-version bower install pdfmake
server-version npm install pdfmake

最后还是采用了后端生成pdf,前端通过接口请求,后端返回pdf stream,最后前端通过blob生成pdf并实现下载。

angularjs中的解决办法

$http.get('/receivepdfurl', {responsetype: 'arraybuffer'}) // 设置$http get请求的responsetype为arraybuffer
 .success(function(data){
  var file = new blob([data], {type: 'application/pdf'}); // 使用blob将pdf stream 转换为file
  var fileurl = url.createojecturl(file);
  window.open(fileurl); // 在新的页面中打开pdf
 })

如何设置pdf的文件名

$http.get('/receivepdfurl', {responsetype: 'arraybuffer'}) // 设置$http get请求的responsetype为arraybuffer
 .success(function(data){
  var file = new blob([data], {type: 'application/pdf'}); // 使用blob将pdf stream 转换为file
  var fileurl = url.createojecturl(file); 
  var a = document.createelement('a'); 
  a.href = fileurl; 
  a.target = '_blank'; 
  a.download = 'yourfilename.pdf';   
  document.body.appendchild(a);   
   a.click();
 })

遇到的问题

后端采用reset api的方式来写接口。前端框架采用的angularjs,所以就采用$resouce来调用接口,同样也设置了responsetype:arraybuffer,但是生成的pdf却无法打开。最后还是改为用$http.get()方式就可以了。

兼容性问题

由于使用了html5 api: bolb,所以只能支持ie10+。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用angular.js能有所帮助,如果有疑问大家可以留言交流。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网