最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

介紹

jsPDF 是一個(gè)使用Javascript語(yǔ)言生成PDF的開源庫(kù)。你可以在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ù)器端可以完美運(yùn)行。

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

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

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

安裝:

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

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

AngularJS中的解決辦法

$http.get('/receivePDFUrl', {responseType: 'arraybuffer'}) // 設(shè)置$http get請(qǐng)求的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); // 在新的頁(yè)面中打開PDF
 })

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

$http.get('/receivePDFUrl', {responseType: 'arraybuffer'}) // 設(shè)置$http get請(qǐng)求的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();
 })

遇到的問(wèn)題

后端采用reset api的方式來(lái)寫接口。前端框架采用的AngularJS,所以就采用$resouce來(lái)調(diào)用接口,同樣也設(shè)置了responseType:arraybuffer,但是生成的PDF卻無(wú)法打開。最后還是改為用$http.get()方式就可以了。

兼容性問(wèn)題

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

總結(jié)

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

您可能感興趣的文章:

相關(guān)文章

  • Angular事件之不同組件間傳遞數(shù)據(jù)的方法

    Angular事件之不同組件間傳遞數(shù)據(jù)的方法

    這篇文章主要介紹了Angular事件之不同組件間傳遞數(shù)據(jù)的方法,利用Angular Event在不同組件之間傳遞數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Angular2仿照微信UI實(shí)現(xiàn)9張圖片上傳和預(yù)覽的示例代碼

    Angular2仿照微信UI實(shí)現(xiàn)9張圖片上傳和預(yù)覽的示例代碼

    本篇文章主要介紹了Angular2仿照微信UI實(shí)現(xiàn)9張圖片上傳和預(yù)覽的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-10-10
  • Angular6封裝http請(qǐng)求的步驟詳解

    Angular6封裝http請(qǐng)求的步驟詳解

    最近抽空學(xué)習(xí)了一下Angular6,之前主要使用的是vue,所以免不了的也想對(duì)Angular6提供的工具進(jìn)行一些封裝,今天主要就跟大家講一下這個(gè)http模塊
    2018-08-08
  • AngularJs表單驗(yàn)證實(shí)例代碼解析

    AngularJs表單驗(yàn)證實(shí)例代碼解析

    這篇文章主要介紹了AngularJs表單驗(yàn)證實(shí)例代碼解析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • AngularJS 依賴注入詳解及示例代碼

    AngularJS 依賴注入詳解及示例代碼

    本文主要介紹AngularJS 依賴注入的知識(shí),這里整理了相關(guān)的基礎(chǔ)知識(shí),并附示例代碼和實(shí)現(xiàn)效果圖,有興趣的小伙伴可以參考下
    2016-08-08
  • 使用Angular CLI生成 Angular 5項(xiàng)目教程詳解

    使用Angular CLI生成 Angular 5項(xiàng)目教程詳解

    這篇文章主要介紹了使用Angular CLI生成 Angular 5項(xiàng)目的教程詳解 ,需要的朋友可以參考下
    2018-03-03
  • Angular.js中$resource高大上的數(shù)據(jù)交互詳解

    Angular.js中$resource高大上的數(shù)據(jù)交互詳解

    這篇文章主要給大家介紹了關(guān)于Angular.js中$resource高大上的數(shù)據(jù)交互的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用angular.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起看看吧。
    2017-07-07
  • AngularJS實(shí)現(xiàn)的2048小游戲功能【附源碼下載】

    AngularJS實(shí)現(xiàn)的2048小游戲功能【附源碼下載】

    這篇文章主要介紹了AngularJS實(shí)現(xiàn)的2048小游戲,可實(shí)現(xiàn)通過(guò)鍵盤W、S、A、D鍵控制上下左右移動(dòng)進(jìn)行游戲的功能,涉及AngularJS頁(yè)面元素動(dòng)態(tài)操作及數(shù)值運(yùn)算等相關(guān)操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下
    2018-01-01
  • AngularJS基礎(chǔ) ng-dblclick 指令用法

    AngularJS基礎(chǔ) ng-dblclick 指令用法

    本文主要介紹AngularJS ng-dblclick 指令,這里對(duì)ng-dblclick基礎(chǔ)資料整理并詳細(xì)介紹,簡(jiǎn)單的代碼實(shí)例和實(shí)現(xiàn)效果,希望能幫助學(xué)習(xí)AngularJS的朋友
    2016-08-08
  • AngularJS入門教程之?dāng)?shù)據(jù)綁定用法示例

    AngularJS入門教程之?dāng)?shù)據(jù)綁定用法示例

    這篇文章主要介紹了AngularJS之?dāng)?shù)據(jù)綁定用法,結(jié)合實(shí)例形式分析了AngularJS基于內(nèi)置指令ng-model實(shí)現(xiàn)數(shù)據(jù)綁定的操作技巧,需要的朋友可以參考下
    2016-11-11

最新評(píng)論

宽甸| 榆社县| 武胜县| 铜梁县| 三亚市| 新郑市| 杂多县| 平安县| 海阳市| 昌宁县| 大化| 卢湾区| 江陵县| 兴安县| 深水埗区| 濮阳县| 洪洞县| 齐河县| 许昌市| 莱州市| 利辛县| 南康市| 山阴县| 玛曲县| 湘西| 麻城市| 温州市| 盱眙县| 南投县| 尼木县| 尤溪县| 延庆县| 凌云县| 高唐县| 治多县| 临澧县| 孟村| 武夷山市| 七台河市| 郁南县| 宝坻区|