在谷歌chrome、Firefox等浏览器打开、编辑、保存微软Office、金山WPS文档
历史背景
在2015年的主流浏览器版本中,因为可以直接调用微软开源的 ActiveX控件,可以实现微软Office软件的在线编辑及审阅功能,但是从2015年开始,各大主流浏览器先后取消了对 NPAPI插件,导致在线编辑Office软件成为了一个难题。虽然后来有商业公司开发的相关控件,但是还是无法 克服ActiveX控件固有的缺陷,不仅限制了浏览器的版本,还需要用户单独设置浏览器安全设置,导致用户体验极差。
后来随着SAAS模式的兴起,网页在线编辑文档也越来越流行,很多巨头公司都发布了在线Office服务,虽然这些服务在多人协作、跨平台等方面有优势,但是存在的问题也很多,比如桌面版Office就存在一些功能缺失:需要网络随时保持在线、不能保存桌面生成的文档、表格过大打开的时候卡死、多文档同时编辑板式不一致等,最关键的是在线Office服务很难整合到自己公司的OA、GRM、ERP中去,最好的办法还是需要在桌面Office基础上,通过技术手段让其流畅的运行在 Chrome、Firefox、Edge、360、Opera、QQ等主流版本浏览器中。
现有方案
1.浏览器插件方案
此方案只适用于IE浏览器,通过在网页中 直接运行ActiveX控件调用桌面Office软件的自动化接口来实现, 免费DsoFramer及点聚WebOffice控件都是基于此原理,另外一些收费的如: 重庆软航NTKO Office文档控件、北京卓正PageOffice、广州华尔太WebOffice控件也是基于此原理。2021年初随着Chrome 对 Flash Player PPAPI插件的支持,浏览器插件的方案就彻底失效了。
2.特定浏览器方案
一些公司为了降低开发成本,又想继续使用公司原有系统,被迫继续使用安全漏洞较多的低版本Chrome或者360等其他低版本浏览器,低版本浏览器的安全漏洞和BUG非常多,导致Office文档控件在此基础上行使用也困难重重。
3.外接程序方案
各浏览器禁用 NPAPI插件后,各个厂商纷纷使用浏览器外部协议来 启动独立的EXE外接程序,看起来问题得到了很好的解决,但是每次运行中用户端都会弹出对话框,让用户不胜其烦。用户体验极差,如果用户此时已经打开了文档,还非常容易引起文档异常,导致文件丢失等情况。
4.双核方案
通过 Chrome等浏览器上的扩展程序IETab来实现,此方案同样会有 ActiveX控件弹窗, 用户体验很差。
最终升级方案:
通过上述4个方案可以看出,如果想在主流浏览器中打开、编辑、保存微软Office文档,核心点就在于独立于浏览器之外并且能很好兼容各浏览器。这个就是今天介绍的已经非常成熟的商业化产品—猿大师中间件。
猿大师中间件的微软Office网页小程序如何解决的呢?
原理就是在网页中指定位置和大小,模拟实现一个内嵌到网页中显示的窗口,在这个窗口中再调用桌面Office软件的自动化接口实现doc、xls、ppt等文档的操作。
前端还必须可对这个窗口进行实时控制,而且窗口必须跟随浏览器的移动和缩放、网页滚动、标签页切换、关闭等操作进行自动联动。这个窗口的宿主进程同时提供Web Socket的服务端和JSON打包命令的解析执行模块,前端就可以通过Web Socket连接后发送JSON打包的控制命令实现控制此窗口的动作。此方案可以说是上述外接程序方案的升级版,关键差异在于此方案可实现内嵌Word、Excel、PowerPoint、WPS文字、WPS表格等程序窗口到网页指定区域运行的效果,而且抛弃了通过IE内核来加载ActiveX控件的方案,解决了用户体验差、加载缓慢和内存占用高的问题。另外启动这个外接程序是通过Web Socket连接实现的,也解决了每次启动都会弹提示的烦恼问题,还有就是提供了类似ActiveX控件的自动升级方案,可在网页中实现静默自动升级,并额外增加了调用验证机制确保外接程序的安全启动。
另外猿大师中间件的微软Office网页小程序提供了丰富的二次开发接口,对现有系统改动比较小的前提下, 请求启动IE控件小程序加载即可。
总结:
一个好的技术实施方案,首先是要满足客户的刚性需求,其次是尽量降低采购、开发、实施及维护的总成本,再次是要有良好的兼容性和稳定性,最后需尽量确保技术方案不能因为浏览器的升级而失效。本文基于当前最新的技术信息和实践经验,给大家提供了猿大师中间件搭配Office网页小程序这样一个稳定可靠、体验好、兼容性佳的桌面Office文档控件技术方案,尤其适合在内网处理复杂文档和数据量大的表格场景,以供大家技术选型参考。
在谷歌chrome、Firefox等浏览器打开、编辑、保存微软Office、金山WPS文档相关推荐
- 新版谷歌Chrome取消对PPAPI插件支持后,浏览器网页打开编辑保存微软Office、金山WPS文档解决方案
最近陆续看到一些大学发布公告,谷歌Chrome取消了对PPAPI插件支持,导致某些在线Office厂家产品将无法在谷歌Chrome107及以上版本运行,被迫更换360浏览器或者使用低版本Chrome浏 ...
- 如何在谷歌chrome中打开、编辑、保存微软Office文档?
历史背景 在2015年的主流浏览器版本中,因为可以直接调用微软开源的 ActiveX控件,可以实现微软Office软件的在线编辑及审阅功能,但是从2015年开始,各大主流浏览器先后取消了对 NPAPI ...
- Java开发在线打开编辑保存Word文件(支持多浏览器)
Java调用PageOffice实现在线编辑保存Word文件(以jsp调用为例,支持SSM.SSH.SpringMVC等流行框架) 1. 下载PageOffice开发包:http://www.zhuo ...
- java开发在线打开编辑保存word文件
Java调用logo是"P"图标的第三方插件,实现在线编辑保存Word文件(以jsp调用为例,支持SSM.SSH.SpringMVC等流行框架) 工具/原料 Eclipse或MyE ...
- pageOffice插件 springboot实现服务器上Word文档在线打开编辑保存
pageOffice插件 springboot实现服务器上Word文档在线打开编辑保存 需求: 在oa系统上,想实现在线,服务器上doc,docx文档,在web打开,编辑.编辑后,可以再同步保存到服务 ...
- 在桌面上离线编辑Office Web Apps文档
Would you like to edit your online documents in Office 2010 or 2007 instead of in the Office Web App ...
- web在线编辑word,excel,pdf插件-----WebOffice 文档控件API
目 录 一.工作原理...5 1.1 开发流程...5 1.2 WEB页面调用控件:.6 二.接口说明...7 2.1 接口...7 2.1.1 ...
- PDF文件能编辑吗,怎么删除PDF文档中的空白页
有时候我们接触的文件是PDF格式,到遇到文件中夹杂的有空白页面需要进行删除的时候,这个时候我们应该怎么操作呢,有些小伙伴不知道PDF文件能不能编辑,小编来告诉你,PDF文件是可以编辑的,但PDF文件的 ...
- java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计工作流流程编辑OA系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...
- word打开wps文件乱码_Word打开WPS文档成乱码怎么办
Word打开WPS文档成乱码怎么办 最近一位同事拿来一篇WPS做的论文,请我帮他修改后再打印出来,我的电脑中安装的字处理软件是Word XP.记得Office XP中自带了WPS文档转换器,一向没机会 ...
最新文章
- Exchange 2010向外网发邮件的配置
- java IO之 File类+字节流 (输入输出 缓冲流 异常处理)
- PM2.5检测 -- PMS7003 采集和 MQTT 传输
- JAVA抽象类为什么可以有构造_抽象类为什么可以有构造函数?- Constructor of an abstract class in C#(转载)...
- IOS开发基础之网易新闻环境搭建异步请求json,AFN网络封装第1天
- 上传文件和提交textfield_0基础掌握Django框架(37)文件上传
- centos修改磁盘uuid_为什么MySQL用uuid做主键会被骂?
- 演练 望炉山瀑布文字样式 0929
- 动态卷积:自适应调整卷积参数,显著提升模型表达能力 CVPR 2020
- Facebook热门应用被曝向第三方提供用户信息
- C# 二进制数据、图片存入、读出 sql server 数据库
- html动态资源加载进度,JavaScript_快速解决js动态改变dom元素属性后页面及时渲染的问题,今天实现一个进度条加载过程 - phpStudy...
- 被苹果摆了一道的高通,亮出了一张“小米”牌
- 一台电子计算机埃尼阿克的介绍,世界之最——第一台电子计算机
- android平台数字看板,数据看板
- IE浏览器设置UserAgent
- 利用NCBIdatasets批量下载大规模生信数据集
- Master HA彻底解密
- qq侧滑界面的实现(DreawerLayout)
- linux下使用PulseAudio获取扬声器的音量和是否静音(C++)