Android實現(xiàn)pdf在線預覽或本地預覽的方法
最近項目中需要使用在線預覽pdf,并要能實現(xiàn)自動播放,我想這樣的需求無論如何來說都是很操蛋的
由于本人水平有限,最后討論將項目需求改成將pdf下載到本地再實現(xiàn)自動播放。
接下來總結下目前能夠實現(xiàn)pdf閱讀的方案,開發(fā)當中需要根據(jù)實際需求去選擇相應的方案。
1.使用Google doc支持來展示word,excel,pdf,txt(WebView方式在線預覽):
<span style="font-size:18px;">WebView urlWebView = (WebView)findViewById(R.id.containWebView); urlWebView.setWebViewClient(new AppWebViewClients()); urlWebView.getSettings().setJavaScriptEnabled(true); urlWebView.getSettings().setUseWideViewPort(true); urlWebView.loadUrl("http://docs.google.com/gview?embedded=true&url=" + "YOUR_DOC_URL_HERE"); public class AppWebViewClients extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); } }</span>
https://docs.google.com/gview?embedded=true&url=文檔地址
優(yōu)點:使用簡單,無需服務器和客戶端的額外部署工作。
缺點:國內需要翻墻訪問。
2.github開源項目:https://github.com/JoanZapata/android-pdfview:
<span style="font-size:18px;">引入:compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'</span>
<span style="font-size:18px;"> <com.joanzapata.pdfview.PDFView android:id="@+id/pdfview" android:layout_width="match_parent" android:layout_height="match_parent"/></span>
<span style="font-size:18px;"> pdfView = (PDFView) findViewById(R.id.pdfview); //加載assets下的文件 pdfView.fromAsset("sample.pdf") //.fromFile("")指定加載某個文件 //指定加載某一頁 /*.pages(0, 1,2, 3, 4, 5)*/ .defaultPage(1) .showMinimap(false) .enableSwipe(true) /* .onDraw(onDraw) .onLoad(onLoadCompleteListener) .onPageChange(onPageChangeListener)*/ .load();</span>
里面有很多方法,可以去看PDFView的源碼。
3.Office Web 365(WebView方式在線預覽,具體用法同1)
第三方公司提供的一種 Office 文檔在線預覽的功能,能夠實現(xiàn) Microsoft、Adobe、WPS
文檔的移動端和PC端在線網(wǎng)頁訪問。使用簡單,類似 Google Doc 訪問方式,一個固定格
式的鏈接,輕松實現(xiàn):http://ow365.cn/?i=您的網(wǎng)站ID&furl=文檔地址
優(yōu)點:功能強大,使用簡單。
缺點:付費使用(可免費受限使用,如訪問次數(shù)、廣告顯示等)。
4.打開本地應用
如果移動設備中安裝有能夠打開 Office 文檔的本地應用,也可以借助它們打開所要操作的文檔,
當然前提是必須先將遠程文檔下載到設備的本地存儲空間中:
<span style="font-size:18px;">Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //officeFile:本地文檔;type:文檔MIMEType類型,可以使用文件格式后綴 intent.setDataAndType(Uri.fromFile(officeFile), type); if (intent.resolveActivity(getPackageManager())!=null){ startActivity(intent); }</span>
優(yōu)點:可讀可寫。
缺點:需要先行下載,同時設備中存在能夠打開文檔的本地應用,并且閱讀時會離開當前應用。
5.第三方 SDK
網(wǎng)上有一些免費開源的解析源碼和第三方公司提供的付費 SDK,將其嵌入自己的項目中,便能使用其中的功能操作 Office 文檔。這種方式的缺點也顯而易見,最直接的就是大大增加了 APK 安裝文件的大小。免費的開源項目,存在一些局限性和不穩(wěn)定性,操作繁瑣;付費 SDK ,使用起來相對較為簡單。
免費開源:
pdfium-----Google 的開源項目,也是 Chrome 瀏覽器的PDF渲染引擎,初始代碼來自國內知名PDF技術公司「福昕」。
AndroidPdfViewer(上面的方法2)
PdfiumAndroid-----基于 pdfium 的兩個 Android 平臺實現(xiàn)方式,支持 PDF 文檔的應用內預覽,支持動畫、縮放、手勢和雙擊操作。
MuPDF------一個輕量級的 開源 PDF 和 XPS 查看器。
付費SDK:
Foxit PDF SDK-----福昕出品,性能穩(wěn)定,功能強大,支持 PDF 的顯示、導航、創(chuàng)建、搜索、
注釋、保護、PDF文本提取、圖片轉換、表單數(shù)據(jù)收集和編輯等功能。
plugPDF-----來自國外的一個付費 SDK,使用簡單,只需三步即可集成到自己的應用中并使用。
6.服務器端解析
需要在服務器端完成 Office 文檔的解析工作,通過一些技術手段將文檔轉換為 Html 文件或者圖片,然后再在客戶端通過 WebView 加載顯示。
PDF.js:「 mozilla 」開源的一種JS解決方案,提供了服務器和客戶端兩種集成方式。
pdf2htmlEX:類似 PDF.js ,在服務器端集成,利用 Web技術完成 Office 文檔的解析工作。
總結:
總體來說,在 Android 平臺上實現(xiàn) Office 文檔的預覽和編輯功能,屬于一個較為棘手的問題,需要結合實際產(chǎn)品需求和開發(fā)成本、穩(wěn)定性等多方面考慮。當然,如果不是硬需求,最好不要隨意集成開源 SDK,畢竟研發(fā)成本過高,同時穩(wěn)定性不見得如你所想。
以上這篇Android實現(xiàn)pdf在線預覽或本地預覽的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Android LinearLayout實現(xiàn)自動換行
這篇文章主要為大家詳細介紹了Android LinearLayout實現(xiàn)自動換行,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-08-08詳解Android Service與Activity之間通信的幾種方式
這篇文章主要介紹了詳解Android Service與Activity之間通信的幾種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04Android studio 引用aar 進行java開發(fā)的操作步驟
這篇文章主要介紹了Android studio 引用aar 進行java開發(fā)的操作步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09