1. 程式人生 > >pdf.js 入門使用指南1-安裝篇

pdf.js 入門使用指南1-安裝篇

最近由於工作需要,需要一個功能線上瀏覽pdf。經過初步篩選,選定了pdf.js.可以滿足我們所有的功能需求。

一:先簡要概括一下優缺點
優點總結:

  1. 免費,開源的。這點很重要
  2. 純js實現,客戶不需要安裝額外的外掛
  3. 功能強大,縮放,列印,查詢功能應有盡有
  4. 相容主流瀏覽器,火狐,谷歌,ie9+都支援
    缺點總結
    1:js 檔案偏大,載入一起3m 多,即便壓縮後,兩個核心js 檔案也在1m左右。會影響載入速度
    2:引文使用H5 技術,ie8 以及ie8 以下的瀏覽器不支援。

二:下載和安裝
1:進入官網下載地址:
http://mozilla.github.io/pdf.js/getting_started/#download


建議下載最新版,目前最新版本為1.9,建議下載正式版
pdfjs,下載

ps:1.8版本以及以上可以相容,目前的qq瀏覽器,低版本qq瀏覽器可能會不能顯示。
 官網是國外的,開啟可能比較滿,也可以從下面的國內映象站下載
 http://download.csdn.net/download/amu0521/10107388?web=web
  
 2:下載後,解壓檔案,進入build 目錄
  
  
拷貝pdf.js,pdf.worker.js
複製pdf.js 和pdf.worker.js,這兩個檔案到我們的網站目錄

3:編輯檔案,顯示簽名。本步驟非必須。
  開啟pdf.worker.js ,搜尋 data.fieldType === ‘Sig’ ,定位到大約28728行,註釋掉下面的一行程式碼,如圖
  顯示簽名


  儲存即可。
4:編寫測試網頁,顯示pdf

<html>
<head>
    <title>pdf.js展示1,上一頁,下一頁</title>
</head>
<h1>PDF.js Previous/Next example</h1>

<div>
    <button id="prev">Previous</button>
    <button id="next">Next</button>
    &nbsp; &nbsp;
    <span
>
Page: <span id="page_num"></span> / <span id="page_count"></span></span> </div> <canvas id="the-canvas"></canvas> <script src="js/pdf.js"></script> <script src="js/pdf.worker.js"></script> <script> var url = '/pdf/doc/demo1.pdf'; var pdfDoc = null, pageNum = 1, pageRendering = false, pageNumPending = null, scale = 0.8, canvas = document.getElementById('the-canvas'), ctx = canvas.getContext('2d'); /** * Get page info from document, resize canvas accordingly, and render page. * @param num Page number. */ function renderPage(num) { pageRendering = true; // Using promise to fetch the page pdfDoc.getPage(num).then(function(page) { var viewport = page.getViewport(scale); canvas.height = viewport.height; canvas.width = viewport.width; // Render PDF page into canvas context var renderContext = { canvasContext: ctx, viewport: viewport }; var renderTask = page.render(renderContext); // Wait for rendering to finish renderTask.promise.then(function() { pageRendering = false; if (pageNumPending !== null) { // New page rendering is pending renderPage(pageNumPending); pageNumPending = null; } }); }); // Update page counters document.getElementById('page_num').textContent = num; } /** * If another page rendering in progress, waits until the rendering is * finised. Otherwise, executes rendering immediately. */ function queueRenderPage(num) { if (pageRendering) { pageNumPending = num; } else { renderPage(num); } } /** * Displays previous page. */ function onPrevPage() { if (pageNum <= 1) { return; } pageNum--; queueRenderPage(pageNum); } document.getElementById('prev').addEventListener('click', onPrevPage); /** * Displays next page. */ function onNextPage() { if (pageNum >= pdfDoc.numPages) { return; } pageNum++; queueRenderPage(pageNum); } document.getElementById('next').addEventListener('click', onNextPage); /** * Asynchronously downloads PDF. */ PDFJS.getDocument(url).then(function(pdfDoc_) { pdfDoc = pdfDoc_; document.getElementById('page_count').textContent = pdfDoc.numPages; // Initial/first page rendering renderPage(pageNum); }); </script> </html>

執行效果如下圖
pdf瀏覽

程式碼來自官方例項,進行了整理
http://mozilla.github.io/pdf.js/examples/

提示:
1:請執行在虛擬伺服器上,比如apache或iis等,否則可能會顯示不出來效果。
2:pdf 檔案為任何pdf檔案即可,網站演示的pdf檔案從網上下載的,如果侵權,請留言。
附上demo 目錄結構
pdf瀏覽展示