欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Android 實(shí)現 PDF 文件閱讀功能調研

@author ASCE1885的 Github 簡(jiǎn)書(shū) 微博 CSDN知乎本文由于潛在的商業(yè)目的,不開(kāi)放全文轉載許可,謝謝!

廣而告之時(shí)間:我的新書(shū)《Android 高級進(jìn)階》(https://item.jd.com/10821975932.html)在京東開(kāi)始預售了,歡迎訂購!

Android 系統天然不支持 PDF 文件的閱讀,因此,Android 應用中要實(shí)現 PDF 閱讀功能一般有以下方案:

  • WebView 中調用 GoogleDocs

  • 調起第三方支持 PDF 閱讀的應用

  • 集成第三方 PDF SDK,在 Native 頁(yè)面中閱讀

  • 集成第三方 JS PDF SDK,在 WebView 頁(yè)面中閱讀

  • 將 PDF 文件轉換成 HTML 或者圖片等格式文件


WebView 中調用 GoogleDocs


這是最簡(jiǎn)單的一種方式,利用 GoogleDocs 提供的能力,通過(guò) Android 的 WebView 即可實(shí)現打開(kāi)在線(xiàn) PDF 文檔,代碼如下所示:


public void setDocumentPath(final String path) {    WebView webView = (WebView) findViewById(R.id.webview);    webView.getSettings().setJavaScriptEnabled(true);    webView.getSettings().setPluginsEnabled(true);    webView.loadUrl("https://docs.google.com/viewer?url=http://www.asce1885.com/cms/wwwroot/ng/downLoad/011615200732.pdf");}


這種方案存在的問(wèn)題是國內通常情況下訪(fǎng)問(wèn)不了 Google 提供 的服務(wù),因此這種方案可以不考慮。


調起第三方支持 PDF 閱讀的應用


可行方案中最簡(jiǎn)單的一種方式,缺點(diǎn)是會(huì )跳出自己的應用轉到第三方應用中,而且需要具備以下兩個(gè)條件:

  • PDF 文件需要下載到本地,不支持在線(xiàn)閱讀

  • 用戶(hù)手機中安裝了支持 PDF 閱讀的應用

實(shí)現這個(gè)方案的代碼示例如下:


public Intent getPdfFileIntent(File file) {    Intent intent = new Intent("android.intent.action.VIEW");    intent.addCategory("android.intent.category.DEFAULT");    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    Uri uri = Uri.fromFile(file);    intent.setDataAndType(uri, "application/pdf");    return Intent.createChooser(intent, "Open File");}

集成第三方 PDF SDK,在 Native 頁(yè)面中閱讀


第三方提供了很多免費或者付費的 PDF SDK,但在功能和性能等指標可能存在較大的區別,付費 SDK 的各項指標肯定是最優(yōu)的。集成 Native SDK 的優(yōu)點(diǎn)是體驗好,缺點(diǎn)是會(huì )顯著(zhù)的增加包大小。目前可用的 SDK 主要有:

  • Foxit 福昕 SDK1:國內老牌的付費 PDF SDK,功能強大,如果 PDF 閱讀功能在你的應用中比較常用但又不是核心功能,可以考慮接入它。

  • PlugPDF2:國外的一款付費 PDF SDK,類(lèi)似 Foxit SDK,具體區別可以下載 Demo 試用下。

  • PDFium3:Google 和 Foxit 合作開(kāi)源的 Foxit 的 PDF 源碼,作為 Chrome 瀏覽器的 PDF 渲染引擎組件,當然這是 C/C++ 實(shí)現的。

  • PdfiumAndroid4:mshockwave 基于 PDFium 基礎上適配 Android 平臺的函數庫,barteksc 在這個(gè)基礎上再做了一些修改。

  • AndroidPdfViewer5:barteksc 基于 PdfiumAndroid 基礎上實(shí)現的一個(gè) PDF 閱讀 Demo,支持常見(jiàn)的手勢,縮放,雙擊等效果。

Native 方式的 PDF SDK 當然還有很多,但都存在一個(gè)共同的缺點(diǎn),前面也說(shuō)過(guò),就是會(huì )顯著(zhù)增加包大小,例如 AndroidPdfViewer 的引入,剔除不常用的處理器架構,只保留 armeabi-v7a 和 x86,還是會(huì )增加將近 10M 的大小。


集成第三方 JS PDF SDK,在 WebView 頁(yè)面中閱讀


目前 Android 平臺上可用的第三方 JS PDF SDK 只有 mozilla 開(kāi)源的 PDF.js,有服務(wù)端和客戶(hù)端集成兩種方式可以實(shí)現在 WebView 中打開(kāi) PDF 文件。


服務(wù)端方式


PDF.js6 提供了一套較完善的在 H5 頁(yè)面中閱讀 PDF 的方案,同時(shí)支持 Web 前端,Android 和 iOS WebView 加載。服務(wù)部署起來(lái)應該也比較簡(jiǎn)單,大致的方案如下:

  • 客戶(hù)端獲取到在線(xiàn) PDF 的鏈接

  • 將該鏈接作為參數,通過(guò) WebView 向服務(wù)端的 PDF 服務(wù)發(fā)起請求

  • PDF 服務(wù)將該鏈接的 PDF 文件下載到服務(wù)端緩存目錄,并調用 PDF.js 提供的能力將 PDF 渲染出來(lái)。

更具體的方案需要找服務(wù)端同學(xué)討論確定。官方提供的 Demo 如下,可以通過(guò)手機的瀏覽器訪(fǎng)問(wèn)看效果:http://mozilla.github.io/pdf.js/web/viewer.html,當然在國內訪(fǎng)問(wèn)會(huì )有點(diǎn)慢。


客戶(hù)端方式


PDF.js 也支持客戶(hù)端集成方式,當然需要做的工作比服務(wù)端集成方式多,也會(huì )給客戶(hù)端起碼增加 1~2M 的體積??蛻?hù)端需要把官方提供的 pdf.js 和pdf.worker.js 拷貝到工程的 assets 目錄,同時(shí)在客戶(hù)端本地實(shí)現一個(gè)離線(xiàn) H5 頁(yè)面,該頁(yè)面通過(guò)上述兩個(gè) js 文件實(shí)現 PDF 的閱讀。H5 頁(yè)面的交互和設計需要設計師給出來(lái),同時(shí)可能需要前端同學(xué)實(shí)現。


將 PDF 文件轉換成 HTML 或者圖片等格式文件


這個(gè)方案是一位同事給出來(lái)的,一種可行的方案是將 PDF 文件通過(guò) pdf2htmlEX7 轉換成 HTML 格式文件,這樣就可以很方便的使用 WebView 進(jìn)行加載。而且這種格式轉換很完美,幾乎和原來(lái)的 PDF 文件排版一致。這種方案當然也是通過(guò)服務(wù)端實(shí)現,在服務(wù)端將對應的 PDF 文件或者鏈接轉換成 HTML 格式的鏈接,然后客戶(hù)端 WebView 進(jìn)行加載顯示即可。


總結


在上面給出的方案中,如果允許 PDF 閱讀跳出我們自己的應用,那么 調起第三方支持 PDF 閱讀的應用 這種方案是首選;如果需要自己實(shí)現 PDF 閱讀功能,那么需要根據具體業(yè)務(wù)需求來(lái)選擇,如果要求在線(xiàn)閱讀簡(jiǎn)單的 PDF 文件,那么可選上述兩種服務(wù)端實(shí)現方案,如果要閱讀本地 PDF 文件,那么可優(yōu)先選擇 PDF.js 的客戶(hù)端方式,畢竟增加的包大小在可接受的范圍,當然如果你的應用的主要功能就是閱讀功能,那么可能需要選擇用 Native 方式進(jìn)行 PDF 的閱讀。

如果你有更好的方案,請留言讓大家知道噢!


拓展閱讀


《福昕熊雨前:PDFium開(kāi)源項目的背后》8《Custom PDF Rendering in JavaScript with Mozilla’s PDF.Js》9《Displaying PDF files with PDF.js library》10

歡迎關(guān)注我的微信公眾號 ASCE1885,專(zhuān)注與原創(chuàng )或者分享 Android,iOS,ReactNative,Web 前端移動(dòng)開(kāi)發(fā)領(lǐng)域高質(zhì)量文章,主要包括業(yè)界最新動(dòng)態(tài),前沿技術(shù)趨勢,開(kāi)源函數庫與工具等。


[1] http://www.foxitsoftware.cn/products/sdk/PDFsdk/android/ ?
[2] https://plugpdf.com ?
[3] https://android.googlesource.com/platform/external/pdfium/ ?
[4] https://github.com/barteksc/PdfiumAndroid ?
[5] https://github.com/barteksc/AndroidPdfViewer ?
[6] http://mozilla.github.io/pdf.js/ ?
[7] http://coolwanglu.github.io/pdf2htmlEX/ ?
[8] http://www.csdn.net/article/2014-06-23/2820351-Why-Foxit-Open-Sourced-Core-PDF-technologies ?
[9] https://www.sitepoint.com/custom-pdf-rendering/ ?
[10] https://developer.tizen.org/community/tip-tech/displaying-pdf-files-pdf.js-library?langredirect=1 ?

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
使用mozilla pdf.js在A(yíng)ndroid WebView中顯示PDF文件Android API級別低于19
原生Android結合H5混合開(kāi)發(fā)小結
Android中Webview使用自定義的javascript進(jìn)行回調
WebView中Js與Android本地函數的相互調用
android閱讀器pdf開(kāi)發(fā)
mui初級入門(mén)教程(一)— 小白入手mui的學(xué)習路線(xiàn)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久