Android實現(xiàn)文檔在線預覽功能

前段時間,項目中有個需求是實現(xiàn)文檔預覽的功能,Android要實現(xiàn)該功能要比IOS復雜的多凭戴,下面就我調研的情況,總結一下炕矮,供大家參考:

一么夫、WebView 網頁顯示

該方式類似于ios的實現(xiàn)方式,使用 WebView 加載網絡文件的 Url 地址即可顯示肤视。

1档痪、Google Doc

類似 iOS ,Google 也提供了一種在線文檔解析的功能钢颂,只需要按照固定的格式將遠程文檔的 Url 地址傳給 Google 服務器钞它,即可利用 WebView 控件加載新的 Url 地址拜银,顯示即可殊鞭。
但該方法在國內由于無法使用谷歌服務,所以在國內無法使用

2尼桶、Office Web 365

第三方公司提供的一種 Office 文檔在線預覽的功能操灿,能夠實現(xiàn) Microsoft、Adobe泵督、WPS 文檔的移動端和PC端在線網頁訪問趾盐,其實現(xiàn)方式類似Google Doc配置完文檔URL連接就可以了。

3小腊、永中DCS文檔在線預覽

類似「Office Web 365」提供的服務救鲤,都是通過先在個人管理中心添加遠程文檔域名,結合文檔地址秩冈,組合成一個新的 Url 訪問地址本缠,然后便可以在 PC 和 手機端實現(xiàn)在線預覽。

總結:這兩種方式完全依賴于第三方云服務,提供的免費版入问,預覽量有限丹锹,若預覽量大的時候,就需要付費了芬失,好處是提供一個url地址,可以同時實現(xiàn)手機端和PC端在線預覽文檔的需求,而且集成也比較簡單楣黍。

二、打開本地應用

如果移動設備中安裝有能夠打開 Office 文檔的本地應用棱烂,則可以借助這些應用打開所要操作的文檔租漂,但必須先將遠程文檔下載到設備的本地存儲空間中。

intent打開文件代碼:

        Intent intent = new Intent(ACTION_VIEW);
        intent.addCategory(CATEGORY_DEFAULT);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        Uri uri=getUriForFile(file);
        String mimeType=getMimeType(uri);
        intent.setDataAndType(uri, mimeType);
        startActivity(Intent.createChooser(intent, "打開"));

三、第三方SDK

1窜锯、pdf開源庫:

  • AndroidPdfViewer张肾、PdfiumAndroid:基于 pdfium 的兩個 Android 平臺實現(xiàn)方式,支持 PDF 文檔的應用內預覽锚扎,支持動畫吞瞪、縮放、手勢和雙擊操作驾孔。只支持pdf文檔的預覽芍秆,并且需要先下載到本地。
  • MuPDF:一個輕量級的 開源 PDF翠勉,也是只支持pdf格式的文檔妖啥,需要文件先下載到本地。
  • Foxit PDF SDK:它是福昕出品的对碌、收費的sdk荆虱,支持 PDF 的顯示、導航朽们、創(chuàng)建怀读、搜索、注釋骑脱、保護菜枷、PDF文本提取、圖片轉換叁丧、表單數(shù)據(jù)收集和編輯等功能

由于這些支持的文檔格式都是只支持pdf啤誊,所以其實現(xiàn)時需要后臺統(tǒng)一轉換為pdf的文檔格式,然后安卓端只預覽這一種格式文檔拥娄。例如:
后臺可利用openoffice + jodconverter將office文檔轉換為pdf格式蚊锹。這種方式
需要在服務器上安裝openoffice,文檔頁數(shù)多的話轉換速度很慢(頁數(shù)少的話速度在可以接受的范圍之內稚瘾,轉換速度與文檔大小關系不大牡昆,主要是文檔頁數(shù))。然后Android端可用如AndroidPdfViewe第三方開源sdk預覽這些文檔孟抗,預覽的時候需要先下載到本地迁杨。

2、利用相關技術一端完成文檔轉換

  • 服務端轉換文檔:在服務端把office文檔轉化為html凄硼,pdf轉化為圖片铅协,Android端直接用webview加載網址就可以,該種主要看服務端這種好實現(xiàn)不摊沉。
  • 在安卓端完成文檔轉換:使用Poi將doc狐史、docx、xls、xlsx文檔轉換為html骏全,再使用webview加載本地html苍柏。使用Apache的Poi組件,但是由于ppt在轉換過程中需要用到java的awt姜贡,所以無法實現(xiàn)ppt的轉換试吁,也就是說只能實現(xiàn)word、excle的轉換楼咳。

3熄捍、使用騰訊瀏覽服務(TBS)

依托 X5 內核強大的能力,可以實現(xiàn)應用內的文件瀏覽功能母怜、視頻播放功能等余耽。直接集成官方提供的SDK包,集成實現(xiàn)即可苹熏。該種實現(xiàn)還是需要把文檔提前下載到本地碟贾。

:TBS是依托X5內核的,當手機中沒有X5內核的產品(如:微信轨域、QQ袱耽、QQ瀏覽器)時,就無法加載相關文檔

實例代碼如下:

導入庫:

implementation 'com.tencent.tbs.tbssdk:sdk:43903'
private void displayFile(File file) {
        Bundle bundle = new Bundle();
        bundle.putString("filePath", file.getAbsolutePath());

        File tempPath = new File(getExternalCacheDir().getAbsolutePath(),"tempPath/"+file.getName());

        if (!tempPath.getParentFile().exists()) {
            tempPath.mkdirs();
        }

        bundle.putString("tempPath", tempPath.getAbsolutePath());
        boolean result = mTbsReaderView.preOpen(getFileType(file.getAbsolutePath()), false);
        if (result) {
            mTbsReaderView.openFile(bundle);
        }
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末疙挺,一起剝皮案震驚了整個濱河市扛邑,隨后出現(xiàn)的幾起案子怜浅,更是在濱河造成了極大的恐慌铐然,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恶座,死亡現(xiàn)場離奇詭異搀暑,居然都是意外死亡,警方通過查閱死者的電腦和手機跨琳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門自点,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脉让,你說我怎么就攤上這事桂敛。” “怎么了溅潜?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵术唬,是天一觀的道長。 經常有香客問我滚澜,道長粗仓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮借浊,結果婚禮上塘淑,老公的妹妹穿的比我還像新娘。我一直安慰自己蚂斤,他們只是感情好存捺,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曙蒸,像睡著了一般召噩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逸爵,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天具滴,我揣著相機與錄音,去河邊找鬼师倔。 笑死构韵,一個胖子當著我的面吹牛,可吹牛的內容都是我干的趋艘。 我是一名探鬼主播疲恢,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瓷胧!你這毒婦竟也來了显拳?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤搓萧,失蹤者是張志新(化名)和其女友劉穎杂数,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘸洛,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡揍移,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了反肋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片那伐。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖石蔗,靈堂內的尸體忽然破棺而出罕邀,到底是詐尸還是另有隱情,我是刑警寧澤养距,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布诉探,位于F島的核電站,受9級特大地震影響铃在,放射性物質發(fā)生泄漏阵具。R本人自食惡果不足惜碍遍,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阳液。 院中可真熱鬧怕敬,春花似錦、人聲如沸帘皿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹰溜。三九已至虽填,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間曹动,已是汗流浹背斋日。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留墓陈,地道東北人恶守。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像贡必,于是被迫代替她去往敵國和親兔港。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容