亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

12345678_0001 2018-09-11 10:06:28
如何在Angular.JS中接收并下載PDF
查看完整描述

1 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

介紹

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能有所幫助,如果有疑問大家可以留言交流。


查看完整回答
反對 回復 2018-09-23
  • 1 回答
  • 0 關注
  • 1177 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號