欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年11月26日 08:46:33   投稿:daisy  
最近這兩天公司正在做一個PDF協(xié)議下載的功能,目前的解決方案可以分為完全前端生成和后端生成兩種方式。前端生成PDF有jsPDF 和pdfmake 兩種方式,下面這篇文章就給大家分享下如何在Angular.JS中接收并下載PDF的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。

介紹

jsPDF 是一個使用Javascript語言生成PDF的開源庫。你可以在Firefox插件,服務(wù)端腳本或是瀏覽器腳本中使用它。

客戶端Safari 和 iPhone Safari 支持得最好,其次是Opera和Windows下的Firefox 3等。IE暫不支持。

示例代碼:

var doc = new jsPDF();
doc.text(20, 20, 'Hello world.');
doc.save('Test.pdf');

服務(wù)器端可以完美運行。

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

pdfmake支持中文,但是由于還需要引入font文件,導(dǎo)致文件體積可到十幾M,不適合前端。

pdfmake 是基于客戶端服務(wù)器的 PDF 打印解決方案,完全基于 JavaScript 開發(fā)。提供強大的排版引擎

安裝:

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

最后還是采用了后端生成PDF,前端通過接口請求,后端返回PDF Stream,最后前端通過Blob生成PDF并實現(xiàn)下載。

AngularJS中的解決辦法

$http.get('/receivePDFUrl', {responseType: 'arraybuffer'}) // 設(shè)置$http get請求的responseType為arraybuffer
 .success(function(data){
  var file = new Blob([data], {type: 'application/pdf'}); // 使用Blob將PDF Stream 轉(zhuǎn)換為file
  var fileUrl = URL.createOjectURL(file);
  window.open(fileUrl); // 在新的頁面中打開PDF
 })

如何設(shè)置PDF的文件名

$http.get('/receivePDFUrl', {responseType: 'arraybuffer'}) // 設(shè)置$http get請求的responseType為arraybuffer
 .success(function(data){
  var file = new Blob([data], {type: 'application/pdf'}); // 使用Blob將PDF Stream 轉(zhuǎn)換為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來調(diào)用接口,同樣也設(shè)置了responseType:arraybuffer,但是生成的PDF卻無法打開。最后還是改為用$http.get()方式就可以了。

兼容性問題

由于使用了HTML5 API: Bolb,所以只能支持IE10+。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學習或者使用Angular.js能有所幫助,如果有疑問大家可以留言交流。

您可能感興趣的文章:

相關(guān)文章

最新評論