近期,有一個朋友做B端,服務器存了大量的金融類數據,很多都是pdf文檔,他現在的做法是,先將pdf文檔轉換成flash,再放到瀏覽器上給用戶瀏覽,但是他告訴我,這種體驗太差了,而且很好資源,空間已經快不夠了,向我咨詢有沒有可以直接讀取pdf文檔的,我之前也沒做過,於是,我簡單搜索了一下,還真是有,下面給大家整理出來,供大家參考。
pdf.js是一款開源的pdf文檔讀取解析插件,據說在HTML5下誕生的,對於主流的瀏覽器基本都支持。
官網GitHub地址如下:https://github.com/mozilla/pdf.js
由於官網項目文件過多,不太容易理解,因此,我自己針對此項目做了一個簡單的Demo,Demo參考地址如下:
1.新窗口瀏覽pdf文檔:http://www.51purse.com/pdf/web/viewer.html?name=b.pdf
2.點擊連接讀取第一頁的pdf文檔:http://www.51purse.com/pdf/web/demo1.html
3.點擊連接,選擇需要打開的文件,進行pdf預覽:http://www.51purse.com/pdf/web/demo2.html
pdf.js主要包含兩個庫文件,一個pdf.js和一個pdf.worker.js,,一個負責API解析,一個負責核心解析
比如Demo1,點擊連接,可在當前頁面打開一個pdf文檔,進行預覽,代碼剖析
1.引入pdf.js
2.解析讀取pdf
function showPdf(){ PDFJS.workerSrc = '../build/pdf.worker.js';//加載核心庫 PDFJS.getDocument(url).then(function getPdfHelloWorld(pdf) { // // 獲取第一頁數據 // pdf.getPage(1).then(function getPageHelloWorld(page) { var scale = 1.5; var viewport = page.getViewport(scale); // // Prepare canvas using PDF page dimensions // var canvas = document.getElementById('the-canvas'); var context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; // // Render PDF page into canvas context // var renderContext = { canvasContext: context, viewport: viewport }; page.render(renderContext); }); }); }
3.設置HTML標簽
<a href="javascript:void(0)" target="_blank" onclick="showPdf()">顯示pdf文檔</a>
<canvas id="the-canvas"></canvas>
4.demo1是通過調用API自己解析,通常,我們直接使用官網的Demo,比如viewer.html,或者Demo2,官方已經為我們設置好了預覽的皮膚和各種事件,因此,我只需要將官方的庫引進去,會進行本地預覽即可。
如果有人需要代碼或者不明白的可以加入PDF群:707875596
作者:慕課講師/河畔一角
前端基於Vue2.6/小程序/小程序雲 + Node.js + MongoDB 全棧的微信支付、微信授權、微信好友/朋友圈分享等全棧課程,歡迎廣大前端開發者購買觀看
http://coding.imooc.com/class/343.html
前端基於Vue2.0 + Node.js + MongoDB 全棧的慕課網課程,歡迎廣大前端開發者購買觀看
http://coding.imooc.com/class/113.html
前端基於React16 + React-Router4.0 + Redux +AntD 慕課首門基於共享單車后台通用系統上線了,歡迎廣大前端開發者觀看