在此专题一 PageHiOffice网页组件(WebOffice文档控件)开发集成技巧专题一-CSDN博客
中初步介绍了PageHiOffice 相对其它同类产品的优势和开源集成源码下载地址。
一、下面是对Office软件的兼容性说明:
PageHiOffice网页组件:基于跨浏览器的原生小程序系统-PluginOK中间件( https://github.com/wangzuohuai/WebRunLocal )单机高级版开发,底层调用微软Office、金山WPS及永中Office等软件的VBA接口实现可程序化驱动的网页在线编辑办公控件,可分别将Word、Excel、PowerPoint软件窗口内嵌到网页指定区域运行并可操控。
可用在Chrome 41、Firefox 50、Edge 80(Chromium内核)、IE 8、Opera、Yandex、Electron、360极速/安全、豆包、夸克、QQ、搜狗、遨游、华为、联想、猎豹、齐安信、红莲花、双核等浏览器低版本,也兼容运行于这些浏览器的最新版本。
1、支持微软Office 2007及以上版本的桌面安装版、建议使用官方发布的Office 2013及以上专业版或专业增强版,如使用家庭、个人或教育等版本,可能需要自行安装VBA支持,微软Office版权归相关公司所有。
2、金山WPS支持2016及以上版本、强烈建议使用支持OFD格式导出的2019及2023专业版(也叫企业版,地址:https://ep.wps.cn/download 选择PC版下载,如需支持PDF文件处理,必须选此版本),一般需求也可用WPS365商业版,地址:https://365.wps.cn/download365 选择PC版下载),不建议使用个人版(地址:https://platform.wps.cn/),因为其不支持在管理员权限启动的浏览器中使用,功能相对其它版本弱。
3、支持永中Office2019及以上的企业版,建议使用2024最新版,不支持个人版,永中Office版权归相关公司所有。
二、安装、启动及控制Office网页组件
1、安装:安装包->http://local.zorrosoft.com/Files/PageHiOffice.exe 绿色版-> http://local.zorrosoft.com/Files/PageHiOffice.zip 绿色版下载后解压运行installwrl.bat即可完成安装
2、请求启动Office网页组件实现网页中局部加载doc/xls/ppt等文档显示:
Type为浏览器类型,传0自动判断(前提是当前浏览器已启动并显示在最前端,Flag指定当前页加载时必须是0) 可强制指定浏览器类型Type(1代表IE 2代表Chrome 4代表Firefox 5代表Brave(英文版) 8代表Opera 9代表Vivaldi(英文版) 10代表Yandex 16代表Edge(Chromium内核) 20代表Electron 32代表360极速浏览器 33代表360安全浏览器 34代表360极速浏览器 35代表360企业安全浏览器 36代表360游戏浏览器 37代表360AI浏览器 40代表联想浏览器 45代表双核浏览器 50代表QQ浏览器 51代表微信网页 55代表齐安信浏览器 57代表红莲花浏览器 60代表搜狗浏览器 61代表夸克 62代表遨游浏览器 63代表猎豹浏览器 66代表豆包 70代表华为浏览器)
Type需要指定浏览器类型时,可先通过TestWrl.txt文档中的接口Wrl_BrowserInfo获取到当前浏览器的类型Type、浏览器主窗口句柄BrowserWnd、浏览器绘制窗口句柄DrawWnd及当前网页标题Title,通过判断Title是否为当前网页需要内嵌决定是否继续启动,如果继续启动,把获取到的参数Type、BrowserWnd、DrawWnd设置到当前请求参数里,可以加快启动速度
Title:网页标题中的关键词
Url:加载网页组件所在的网页实际地址,在网页中指定小程序的显示位置和大小,不建议使用了,建议改用Web参数
Flag掩码标记:1指定新标签加载(1和16都不指定时为当前页加载) 2显示标题栏 4不自动裁剪越界窗口 8自动适配网页高度和宽度显示 64启用Web参数 128防截屏 256强制显示到副屏 512允许同一网页加载多实例
Web:打开配置(新增方式),可代替Url使用,Flag值+64使用此配置,使用Web时必须指定Left、Top、Width、Height的值
Web中参数说明:
Edit 代表编辑权限(除1、512、1024都支持外,其它只有WORD才支持,1024只有在OLE嵌入方式下生效 其中1、2、16、32、64、128互斥) 1只读方式打开 2打开后自动处于修订模式 4禁止另存 8禁止打印 16禁止复制内容 32只能修订 64只能批注 128预览模式 256禁止粘贴内容出编辑窗口 512在PageHi菜单支持上传下载文档 1024安全文档(载入后和上传后自动删除本地文档) 2048禁用全屏编辑
Hide 代表隐藏的界面元素(目前完整嵌入模式下只支持8和16) 1隐藏菜单 2隐藏标准工具栏 4隐藏格式工具栏 8隐藏状态栏 16隐藏右键菜单
User 代表编辑文档的用户名称
PW 代表打开文档需要的密码 OLE嵌入方式下不支持
DataPath 代表文档查找和保存默认路径
WaterMark 打开或新建文件后自动加水印节点信息,内容和接口Office_InsertWaterMark一致
Cookie 当Open打开的文档是服务器上的Url地址时,网络请求Url设置Cookie来获得下载权限
Auth 当Open打开的文档是服务器上的Url地址时,网络请求Url设置Auth来获得下载权限
IframeX和IframeY分别为iframe嵌套的横竖偏移修正坐标
BarW和BarH分别是网页右侧和底部预留区域,ScrollTop为顶部滚动预留高度
网页组件实际显示首先会基于Url或Web中指定的坐标和大小,再根据IframeX、IframeY、BarW、BarH设定的值做修正
Option:1是启动微软Word 为2启动微软Excel 为3启动微软PPT 5启动Adobe Pdf Reader或福昕OFD版式办公套件的OCX控件打开pdf 8是福昕OFD版式办公套件的OCX控件打开ofd
Version:0:OLE嵌入方式加载 1:完整加载(支持文档对比操作) 2:OLE嵌入方式加载(与0差别在于WPS专业版及微软Office高版本提前启动Office进程以支持多文档及加快启动性能) Option为5时Version自动默认为1
Open:为需要打开的文档路径,磁盘目录斜杠用/或\\ 支持服务器HTTP协议的文件下载路径(请可设置Auth或Cookies等确保无需登录可下载),下载地址中如包含文件名,尽量把文件名放到Url地址中最后一个参数;如果没有包含文件名,请在Content-Disposition中指定filename
此参数如非全路径,包括服务器路径,除非启动时指定了数据文件目录DataPath,否则默认使用中间件程序Data子目录作为根目录使用 如果使用字节流文件打开,这里不需要指定
注意:Open、Url中如果有特殊字符= & 双引号或中文等,需要用URL编码处理后传递
举例:
自动识别当前浏览器并启动微软Word程序
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Version":2,"Title":"Office Applet","Flag":66,"Left":20,"Top":20,"Width":480,"Height":320,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Web": {"Edit":7,"Hide":0,"User":"test","PW":"","DataPath":"c:/OfficeDoc"},"Option":"1","Open":"D:/Zorro/test.doc"}}
自动识别当前浏览器并启动微软Excel程序
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Version":1,"Title":"Office Applet","Flag":66,"Left":20,"Top":20,"Width":480,"Height":320,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Web": {"Edit":3,"Hide":0,"PW":""},"Option":"2","Open":"D:/Zorro/test.xls"}}
自动识别当前浏览器并启动微软PPT程序
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Version":0,"Title":"Office Applet","Flag":66,"Left":20,"Top":20,"Width":480,"Height":320,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Web": {"Edit":1,"Hide":0,"PW":""},"Option":"3","Open":"D:/Zorro/test.ppt"}}
自动识别当前浏览器指定位置自动适配网页大小启动:
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Version":2,"Title":"Office Applet","Flag":72,"Left":0,"Top":0,"Width":0,"Height":0,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Web": {"Edit":7,"Hide":0,"User":"test","PW":"","DataPath":"c:/OfficeDoc"},"Option":"1","Open":"D:/Zorro/test.doc"}}
打开服务器文档,可将Open参数改为类似如下地址
"Open":"http://local.zorrosoft.com/Files/template.doc"
启动后会先后收到三个JSON数据包
A、{"ret":0,"rid":6,"data":{"ID":3}}
代表网页组件WS侦听服务就绪
B、{"event":"Wrl_Listen","aid":3,"rid":6,"data":{"SID":"123","PID":"MSOfficeApplet","port":950}}
返回的侦听端口,可再建立一个Web Socket连接后,调用网页组件中的相关功能,比如打开一个文档。
代表网页组件创建成功,返回ID为当前网页组件运行ID,通过此ID,可执行Wrl_AppletControl、Wrl_AppletScroll、Wrl_AppletResize等命令。
C、{"event":"Wrl_AppletOK","aid":3,"rid":6,"data":{"SID":"123","PID":"MSOfficeApplet","Port":950}}
关于Option参数,如果不确定是调用启动微软Office网页组件、还是金山WPS内嵌网页组件或永中办公内嵌网页组件,请先调用指令
X64为1时指定只获取当前有效的64位版,0时都获取
{"req":"Wrl_OfficeInfo","rid":2,"para":{"X64":0}} 获得当前电脑Office及Adobe Acrobat安装的情况,返回值
{"ret":0,"rid":2,"req":"Wrl_OfficeInfo","data":{"Info":[{"Type":1,"X64":0,"Cur":0,"Ver":"15.0.5389.1000"},{"Type":11,"X64":0,"Cur":0,"Ver":"11.1.0.11045"},{"Type":21,"X64":0,"Cur":1,"Ver":"8.0.0.0"},{"Type":5,"X64":0,"Cur":0,"Ver":"","Path":"C:/Program Files (x86)/Common Files/Adobe/Acrobat/ActiveX/AcroPDF.dll"}]}}
Type 1 代表微软Office,11代表金山WPS,21代表永中Office 5代表Adobe Acrobat
X64 代表是否为64位版本
Cur 代表是否当前有效
Ver 代表文件版本信息
3、请求控制Office网页组件:
当前端不再需要网页组件时可指定关闭,或者显示/隐藏及全屏显示等
ID为启动网页组件时返回JSON中的ID值,Code代表控制类型掩码:1正常关闭 128强制迅速关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,4和32隐藏后可通过8恢复显示
{"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}}
4、请求滚动微软Office网页组件:
当前端截取到网页滚动通知时,需要调用此接口实现网页组件和网页的滚动联动
ID为启动网页组件时返回JSON中的ID值
Code为滚动方向1是水平,2是垂直,3是同时
Left为横向滚动条位置,Top为纵向滚动条位置
{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}}
5、请求改变微软Office网页组件显示位置或大小:
当前端网页显示区域缩放时,可动态修改网页组件的显示位置或大小
ID为启动网页组件时返回JSON中的ID值,Width和Height分别为新的宽度和高度,X和Y分别为新的显示位置,不指定时保持不变,指定时原设置的IframeX和IframeY失效
{"req":"Wrl_AppletResize","rid":4,"para":{"ID":1,"Width":500,"Height":600}}
或同时设置网页组件显示起始坐标
{"req":"Wrl_AppletResize","rid":5,"para":{"ID":1,"Width":500,"Height":600,"X":20,"Y":20}}
6、请求设置网页预留右侧宽度和底部高度,滚动条信息、垂直滚动及水平滚动位置:
当网页组件显示区域超过当前网页时,需去除滚动条的显示影响
ID为启动网页组件时返回JSON中的ID值,BarW为预留右侧宽度 BarH为预留底部高度
Code 1代表有水平滚动条,2代表有垂直滚动条,3代表都有
ScrollTop垂直滚动条位置 ScrollTop水平滚动条位置
{"req":"Wrl_ScrollBar","rid":6,"para":{"ID":"1","Code":2,"BarW":0,"BarH":0,"ScrollTop":0,"ScrollLeft":0}}
7、请求对网页组件窗口内容进行截图:
ID为启动网页组件时返回JSON中的ID值,
File为指定截图文件保存路径或扩展名
Base64指定为1时代表返回BASE64编码的图像内容
{"req":"Wrl_AppletSnap","rid":10,"para":{"ID":1,"Base64":1,"File":".jpg"}}
8、’请求缩放网页组件,用于浏览器网页按比例缩放,一般不需要处理:
ID为启动网页组件时返回JSON中的ID值,不指定Scale时,获取当前网页组件所用的缩放百分比,一般和系统缩放比例一致
{"req":"Wrl_AppletScale","rid":11,"para":{"ID":1,"Scale":120}}
在线体验请戳这里:PageHiOffice在线体验