abstract:介紹jsPDF 是一個使用Javascript語言生成PDF的開源庫。你可以在Firefox插件,服務端腳本或是瀏覽器腳本中使用它??蛻舳薙afari 和 iPhone Safari 支持得最好,其次是Opera和Windows下的Firefox 3等。IE暫不支持。示例代碼:var doc = new jsPDF(); doc.text(20,
介紹
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 開發(fā)。提供強大的排版引擎
安裝:
client-version bower install pdfmake server-version npm install pdfmake
最后還是采用了后端生成PDF,前端通過接口請求,后端返回PDF Stream,最后前端通過Blob生成PDF并實現(xiàn)下載。
AngularJS中的解決辦法
$http.get('/receivePDFUrl', {responseType: 'arraybuffer'}) // 設置$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 })
如何設置PDF的文件名
$http.get('/receivePDFUrl', {responseType: 'arraybuffer'}) // 設置$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)用接口,同樣也設置了responseType:arraybuffer,但是生成的PDF卻無法打開。最后還是改為用$http.get()方式就可以了。
兼容性問題
由于使用了HTML5 API: Bolb,所以只能支持IE10+。
更多關于如何在Angular.JS中接收并下載PDF請關注PHP中文網(wǎng)(www.miracleart.cn)其他文章!