Android 上顯示 PDF 文件

使用 WebView 配合 pdf.js 在 Android 上顯示 PDF 文件git

最近在 手機上要顯示 PDF 文件,在搜索引擎上找到了不少方案,大致上有如下幾種:github

  • 使用提供的在線服務,例如 Google 文檔預覽服務,mWebView.loadUrl("http://docs.google.com/gview?embedded=true&url="+ pdfUrl);
  • 使用 AndroidPdfViewer,這是一個 GitHub 上開源的庫,除了體積大點別的都挺好, https://github.com/barteksc/A...
  • 使用 Moliza 開源的 Pdf.js 這個庫是很強大的,配合 WebView ,能夠支持預覽,縮放,翻頁等等功能
  • 使用 騰訊瀏覽服務 https://x5.tencent.com/

我是選擇了 pdf.js 這個庫,使用 WebView 配合 H5 頁面,能夠作到隨意的自定義,而且體積很小,放在服務器的話就更小了。npm

在這裏記錄下使用的過程也方便後來者。

考慮到網絡不穩定的狀況,因此我把 js 庫下載下來了,不介意的能夠直接使用網絡庫canvas

剛開始使用時,直接使用提供的 API 建立 canvas ,每一頁建立一個 canvas 而後排列下來,由於有其餘的內容要顯示。
開發測試的時候由於文件小,而且是在電腦上瀏覽的沒有發現什麼問題,在手機上測試的時候使用了一個稍微大點的文件,內存立馬就爆了。
由於是在加載完成後,每頁都建立一個 canvas 顯示,沒有作到逐頁加載,也沒有作任何循環使用和銷燬的處理,內存就爆了。跨域

在 pdf.js 的例子裏看到了在手機上使用的例子,就改了改,它這個作到了循環使用 canvas,而且是逐頁加載。
修改以後在手機上使用 32M 的文件輕鬆無壓力。示例,傳送門服務器

memory.png

簡單寫了個 Demo :https://github.com/skymxc/Exa...微信

assets 目錄是修改後的頁面。網絡

顯示網絡文件仍是要下載到本地才能夠,由於跨域訪問的限制問題。測試

screen-1.jpg

End 微信掃一掃,關注個人公衆號

微信掃一掃,關注個人公衆號

相關文章
相關標籤/搜索