Cordova插件使用——Office文檔在線預覽那些事
小編:管理員 640閱讀 2022.09.13
最近太忙,就寫篇簡單的。 關于office文檔在線預覽,無外乎這幾種方式:
1. 文檔轉成html或pdf格式,再使用WebView加載顯示。 2. 運用WebView打開在線office文檔地址。 3. 使用能解釋文檔的插件打開。 4. 調用本地office程序打開。復制
第一種方式,有兩種實現方法,一是使用在線的接口(如谷歌、微軟……但前者被墻,后者付費使用,當然也可以自己部署個接口處理轉換,不想特別折騰也可以用微軟的office web apps),二是使用第三方的庫,在客戶端處理好再顯示,但據我個別試用,效果不是很完美。
第二種方式,對于ios就很簡單了,本來瀏覽器就支持預覽office文檔,所以只需調用 webView 加載網絡文件路徑即可,但可惜的是android的webview不支持,不知道將來會不會支持。
第三種方式,如果有完美的插件倒是好,可是基本沒有(如果有找到的,麻煩知會一聲,先謝過)。不過單獨處理pdf文件的,倒是有一兩個可以考慮的,如cordova-plugin-document-viewer。
第四種方式,要求本地裝有office文檔解釋程序,一般裝個WPS即可,但要用戶額外裝個應用的用戶體驗稍顯不足,但既然要看文檔了,自然有本地打開的潛在需求,所以這不足就不算太大事了,而且據上面所述,這種方式性價比中最適用于android端的。
于是常規方案呼之欲出:
使用webView打開ios使用webView打開,android調用本地office程序打開。
對于ios,也僅限于ios,使用瀏覽器插件,如使用cordova-plugin-themeablebrowser即可。
調用本地應用打開對于android,可以使用 cordova-plugin-file-opener2 或 cordova-plugin-fileopener
前者是官網native推薦插件,后者是我個人覺得還行的插件,我嘗試想把兩者優點合并一下,修改成一個新插件,但懶也一直沒空,所以擱置了,有興趣的可以了解下它們,在此我簡單描述下:
一、cordova-plugin-file-opener2 有如下特點:
- 支持多個平臺;
- 有打開文件、卸載等方法;
- 只能打開本地文件;
- android打開文件要手動輸入MIME-Types;
- 有權限要求;
遇到權限問題,一般可以加上下面兩句,具體可以看cordova-plugin-file該file插件文檔:
復制
二、cordova-plugin-fileopener
- 只支持android平臺;
- 只有打開文件的方法;
- 能打開本地文件和遠程文件;
- 內置常用MIME-Types,打開文件不需要手動輸入;
- 基本沒遇到權限問題;
cordova-plugin-file-opener2打開遠程文件還需借助下載插件(如cordova-plugin-file-transfer,但好處是能自定義下載進度條),還需手動輸入MIME-Types,略顯繁瑣,當下載插件下載路徑選擇不合適時,還要應對下權限問題,相比之下,下面的cordova-plugin-fileopener更適用于android打開文件,只是功能比較少,或許作者目的就只是專注于打開文件這一功能。后者查看源碼,很簡單,就一個文件,其打開遠程文件的原理其實也是先下載到本地然后再打開,判斷文件類型是根據文件路徑截取擴展名,然后根據擴展名與內置的MIME-Types映射表轉化,這就會有個不足地方:文件路徑不帶擴展名就不太適用,這個時候可以簡單改下源碼,添加一個文件擴展名的參數,當這個參數不為空時,用它做映射,為空時,用它原來的方法即可。 如果不滿足這樣小改動的話,可以把兩者優勢互補,以cordova-plugin-file-opener2為原始項目,像后者那樣添加內置的MIME-Types,當外面不傳入時,就用內置的MIME-Types判斷處理,遇到遠程文件,可以像后者那樣先下載到默認路徑再打開。
當然,如果源碼都不想改,那就考慮這個組合吧:
cordova-plugin-themeablebrowser——ios用 cordova-plugin-fileopener——android用
相關推薦
- Cordova 什么是Cordova? Cordova是用于使用HTML,CSS和JS構建移動應用的平臺。我們可以認為Cordova是一個容器,用于將我們的網絡應用程序與本機移動功能連接。默認情況下,Web應用程序不能使用本機移動功能。這就是Cordova進來的地方。它為網絡應用和移動設備之間的連…
- Hibernate Criterion 在查詢方法設計上能夠靈活的依據Criteria的特點來方便地進行查詢條件的組裝.Hibernate設計了CriteriaSpecification作為Criteria的父接口,以下提供了Criteria和DetachedCriteria.Criteria和DetachedCriteria的主要差別在于創建的形式不一樣,Criteria是在線的,所…