一、背景
在IE、Chrome 45及Firefox 53以下版本的瀏覽器網頁中,可直接或間接調用微軟免費開源的ActiveX控件DsoFramer即可嵌入本地安裝的Office軟件實現在線編輯或審閱Office文檔。然而好景不長,從2015年開始Chrome、Firefox等新生代瀏覽器先后取消了對NPAPI插件的支持,在這些瀏覽器的后續版本中如何實現就成為了技術難題。IE瀏覽器又因各種問題導致其不斷被用戶拋棄,其市場份額已降到前端主流框架直接放棄兼容的地步。而隨着Windows系統及Office軟件的不斷升級,DsoFramer的穩定性和兼容性問題越來越多,不支持64位瀏覽器不說,也不支持金山WPS及開源的LibreOffice等辦公軟件,要命的是2008年以來微軟再無升級版發布,導致其用於商業用途具有很大風險,除非自己有研發能力解決這些問題。雖然隨后有點聚WebOffice控件模仿DsoFramer接力舉起免費的大旗,為其收費的電子印章產品導入客戶,然而依然無法克服ActiveX控件固有的缺陷,只能在32位的IE瀏覽器中使用不說,往往還需要修改終端電腦IE的默認安全設置,實施成本高、加載運行時彈警告導致用戶體驗差,這不現在點聚WebOffice的官方網頁和交流論壇也都沒了蹤影,不再繼續維護升級,因為沒開放源代碼,第三方也無法修改其缺陷,其客戶再次被拋棄了。
隨着SAAS模式的興起,純網頁實現的在線編輯或審閱Office文檔成為了大家重點發力的方向,包括微軟、金山、谷歌、阿里巴巴、騰訊、字節跳動等巨頭在內的諸多公司紛紛發布了自己的在線Office服務並不斷拓展其功能,對傳統OA廠家都造成了一定威脅。經過多年的發展,雖然這些在線文檔服務在多人協作分享、跨平台、使用成本及便捷性、維護升級等方面具有優勢,但存在的問題也着實不少。相對於桌面版Office來說,在線Office服務存在一些功能缺失,需網絡隨時在線方可用,並且不能保證完全兼容桌面版生成的文檔、文檔內容復雜或表格記錄大時打開緩慢甚至直接卡死,多文檔同時編輯或嵌套內容難,版式文檔原樣呈現或打印效果有時無法保證一致性,私密性、安全性不夠,在線服務器壓力大,最關鍵的是其開放能力不足很難整合到OA、CRM、ERP、企業網盤等系統作為子模塊使用。另外,不少企業由於歷史的原因都已購置了桌面版Office的長期使用授權,也整合到了自己的各種業務系統中使用,也就很難再每年付費切換到在線Office版使用,畢竟還面臨要改變用戶使用習慣的難題。所以最好的解決辦法還是在原來的桌面版Office軟件之上,通過技術手段讓其可順暢運行在Chrome、Firefox、Edge、360、Opera、QQ等主流版本瀏覽器中。
二、現有方案
實現微軟Office、金山WPS等桌面軟件嵌入瀏覽器網頁實現在線編輯或審閱doc、docx、xls、xlsx、ppt、pptx、wps、et等辦公文檔,大體上有如下幾個方案:
1、 瀏覽器插件方案
此方案目前主要適用於IE瀏覽器,網頁中直接運行ActiveX控件調用桌面Office軟件的自動化接口來實現。前述章節提到的免費DsoFramer及點聚WebOffice控件如此,收費的重慶軟航NTKO Office文檔控件、北京卓正PageOffice、廣州華爾太WebOffice控件也是如此。而在Chrome 45、Firefox 53以下版本的瀏覽器中,收費的有江西金格iWebOffice智能文檔控件在NPAPI插件中再調用ActiveX控件來請求桌面Office軟件的自動化接口。這些商業收費控件,自然也為滿足OA等系統的需求做了一些兼容性處理,如兼容更高版本的Windows系統、微軟Office、金山WPS及64位瀏覽器,功能擴展如智能填報內容,文檔加密、版本管理、拆分合並,痕跡保留等。2015年開始在非IE瀏覽器取消NPAPI插件支持后的技術突圍過程中,江西金格iWebOffice智能文檔控件表現相對突出,其基於Chrome瀏覽器PPAPI可信插件技術發布的新版可用於兼容44以上版本,並通過在系統驅動層攔截並修改瀏覽器啟動參數解決了PPAPI可信插件必須通過命令行啟動瀏覽器才支持的技術難題,因此其銷售價格非常昂貴。然而采用系統驅動的底層技術方案可能導致操作系統藍屏死機不說,微軟對系統驅動程序管理越來越嚴格,每年的數字證書費用也是一筆不小的開支,況且不少單位的等級保護要求是不允許用系統服務或驅動程序的。另外PPAPI插件並未得到Firefox瀏覽器的支持,只是一個過渡技術方案而已,這不Chrome在2021年初已經取消了對Flash Player PPAPI插件的支持,也宣布了2021年6月終止對 NaCl、PNaCl 和 PPAPI插件的支持,這就徹底宣告了瀏覽器插件模式即將壽終正寢。
2、 特定瀏覽器方案
為了應對Chrome、Firefox等瀏覽器關閉插件接口后的技術挑戰,又希望保證原有業務系統的正常運行,一些實力較弱的公司只好推薦客戶繼續使用面臨安全漏洞威脅的低版本Chrome瀏覽器,或者推薦使用雙內核的國產360安全瀏覽器並要求切換到IE內核使用。實力稍強一點的公司基於Chromium低版本的內核開發特定版瀏覽器來確保NPAPI插件可以繼續使用,用戶無法享受高版本瀏覽器的功能不說,低版本內核存在的安全漏洞和程序BUG也無法得到修復。然而企業信息化系統往往是非常復雜的,對瀏覽器的要求比較高,很可能不支持這些特定版的瀏覽器,所以不能因為Office文檔控件只能在這些特定瀏覽器上運行而導致OA等系統也跟着受到限制。
3、 外接程序方案
重慶軟航NTKO Office文檔控件、北京卓正PageOffice、廣州華爾太WebOffice控件等在NPAPI插件禁用后,紛紛采用瀏覽器外部協議(URL Procotol)方式來啟動獨立的Exe外接程序,而這個獨立程序會內嵌一個IE內核用來支持ActiveX控件的加載運行,也號稱兼容Chrome和Firefox等高版本瀏覽器運行了。這種技術實現導致在網頁中每次啟動Office控件時,都會彈出一個不勝其煩的確認對話框讓最終用戶選擇,如下圖所示:
用戶使用體驗很差,這些彈出的獨立進程窗口和瀏覽器原來的網頁窗口是完全分離的,還涉及到兩個窗口之間的數據傳遞和控制問題,增加了系統復雜性。如果用戶提前啟動了Word、Excel等程序使用,往往還會導致其控件在打開文檔時異常,對商業用途的客戶來說這種技術方案基本上是不可接受的。
4、 雙內核方案
此方案主要是依托Chrome等瀏覽器上的擴展程序IETab來實現,商業用途是需要付費使用的。其原理是通過在Chrome標簽頁中加載一個IE內核渲染的網頁進行覆蓋顯示,這個網頁再調用比如DsoFramer控件實現Office文檔的編輯。由於Chrome的擴展程序必須通過谷歌或微軟應用商店進行安裝,導致此方案存在大規模自主可控部署難問題。而且IETab實現的效果是對整個網頁生效,無法在Chrome內核網頁中再實現局部加載IE內核網頁來顯示,況且IE對運行和下載ActiveX控件常彈出警告,用戶體驗很差,即使通過修改IE的默認安全設置來減少彈窗,然而這個修改設置過程也需要專業的技術人員才能完成,大幅度增加了實施成本。
三、改進方案
通過上述總結的現有技術方案可以看出,想要在當前主流版本的Chrome、Firefox、Edge等瀏覽器網頁中內嵌桌面Office軟件實現文檔或表格在線編輯等功能,核心就在於如何在各瀏覽器中實現一個統一的不依賴瀏覽器自身擴展技術的外接系統,同時必須對各品牌及各版本的瀏覽器有比較好的兼容能力才具有較大的實用價值。所以改進方案就是在網頁中指定位置和大小,模擬實現一個內嵌到網頁中顯示的窗口,在這個窗口中再調用桌面Office軟件的自動化接口實現doc、xls、ppt等文檔的操作。前端還必須可對這個窗口進行實時控制,而且窗口必須跟隨瀏覽器的移動和縮放、網頁滾動、標簽頁切換、關閉等操作進行自動聯動。這個窗口的宿主進程同時提供Web Socket的服務端和JSON打包命令的解析執行模塊,前端就可以通過Web Socket連接后發送JSON打包的控制命令實現控制此窗口的動作。此方案可以說是上述外接程序方案的升級版,關鍵差異在於此方案可實現內嵌Word、Excel、PowerPoint、WPS文字、WPS表格等程序窗口到網頁指定區域運行的效果,而且拋棄了通過IE內核來加載ActiveX控件的方案,解決了用戶體驗差、加載緩慢和內存占用高的問題。另外啟動這個外接程序是通過Web Socket連接實現的,也解決了每次啟動都會彈提示的煩惱問題,還有就是要提供類似ActiveX控件的自動升級替代方案,可實現靜默自動升級,並額外增加了調用驗證機制確保外接程序的安全。此技術方案早已申請了軟件發明專利保護,而且已有對應實現的成熟軟件產品,這就是跨瀏覽器的原生小程序軟件系統—PluginOK中間件(https://codechina.csdn.net/zorrosoft/pluginok),自發布以來成功應用到電力、醫療、交通、安防、保險、工業設計等行業客戶,獲得了一致好評。其技術原理圖如下:
微軟Office網頁小程序(http://zorrosoft.com/Files/msofficeapplet.txt )和金山WPS網頁小程序(http://zorrosoft.com/Files/WPSOfficeapplet.txt )都提供了豐富的二次開發接口,並可根據自己需要進行二次開發。由於這個改進方案提供的Office網頁控件接口和老方案的差異比較大,所以比較適合應用在新項目和新產品的中。那么對於哪些已經調用了微軟DsoFramer,點聚WebOffice、NTKO Office等文檔控件的信息化系統,是否有代價比較小的改造方案的升級方案呢?答案自然是肯定的,可以借助PluginOK中間件之上的IE控件小程序,動態實現雙內核的運行效果,類似現有方案中的雙內核方式,但解決了分發和在線升級的難題,同時可實現在Chrome網頁中局部加載顯示的效果,用戶體驗也得到了大幅度提升。無需改變這些文檔控件的調用方式,只需要在網頁中判斷如果遇到的是非IE瀏覽器時,請求啟動IE控件小程序加載即可。這里是實現的效果展示視頻:https://www.bilibili.com/video/BV1zp4y1n7R6/
四、總結
一個好的技術實施方案,首先是要滿足客戶的剛性需求,其次是盡量降低采購、開發、實施及維護的總成本,再次是要有良好的兼容性和穩定性,最后需盡量確保技術方案不能因為瀏覽器的升級而失效。本文基於當前最新的技術信息和實踐經驗,給大家提供了PluginOK中間件搭配Office網頁小程序這樣一個穩定可靠、體驗好、兼容性佳的桌面Office文檔控件技術方案,尤其適合在內網處理復雜文檔和數據量大的表格場景,以供大家技術選型參考。