WPSOfficeApplet.txt 16.9 KB
Newer Older
1
金山WPS内嵌网页小程序:基于跨浏览器的原生小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )单机高级版开发,底层调用金山WPS的VBA接口实现可程序化驱动的网页在线编辑办公控件,可分别将WPS文字、WPS表格、WPS演示软件窗口内嵌到网页指定区域运行并操控。最低可用在Chrome 41、Firefox 50、Edge 80(Chromium内核)、360极速/安全、IE 8、Oprea 36、QQ、搜狗等浏览器,也兼容运行于这些浏览器的最新版本。
2 3 4 5 6 7 8

1、PluginOK(牛插)中间件的安装:
1)、如果是exe的安装程序,请直接运行安装;
2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装;
3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有WrlService.txt日志文件输出运行情况。

2、金山WPS内嵌网页小程序控制相关接口:
W
wangzuohuai 已提交
9
说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost:80?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
HTTP网页在线测试:http://zorrosoft.com/wordfull.html  HTTPS网页在线测试:https://zorrosoft.com/officeframe.html
前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码;
A、标记小程序的显示位置和大小
.OfficeApplet {
            margin: 20px 0 0 20px;
            width: 480px;
            height: 320px;
            border: 1px solid blue;
        }
或者
.OfficeApplet {
            width: 480px;
            height: 320px;
            top: 20px;
            left: 20px;
            border: 1px solid blue;
        }
W
wangzuohuai 已提交
27 28 29 30
如果在网页Header区没有标记小程序初始显示位置和大小,请在启动小程序的JSON参数里,添加以下参数:
"Left":20,"Top":20,"Width":480,"Height":320

B、网页中嵌入元素
31 32 33 34 35 36 37
支持IFrame的:
<iframe name="OfficeApplet" id="OfficeApplet" src="OfficeApplet3.html" frameborder="0" align="left" width="550" height="540" scrolling="no">
或者直接用
<div id="OfficeApplet" class="OfficeApplet"</div>

另外需要嵌入用到的JS脚本,脚本程序是完全开源的。

W
wangzuohuai 已提交
38
1)、请求启动金山WPS内嵌网页小程序实现网页中局部加载doc/xls/ppt等文档显示:
39 40
Type为浏览器类型,传0自动判断(前提是当前浏览器已启动并显示在最前端,Flag指定当前页加载时必须是0) 可强制指定浏览器类型Type(2代表Chrome 4代表Firefox 8代表Opera 16代表Edge(Chromium内核) 32代表360极速浏览器 33代表360安全浏览器 34代表360企业安全浏览器 50代表QQ浏览器 60代表搜狗浏览器)
Title:网页标题中的关键词
W
wangzuohuai 已提交
41
Flag掩码标记:1指定新标签加载(1和16都不指定时为当前页加载) 2小程序显示窗口边框 4不自动裁剪越界窗口 8自动适配网页高度和宽度显示
42
IframeX和IframeY分别为iframe嵌套的横竖偏移修正坐标
W
wangzuohuai 已提交
43
BarW和BarH分别是网页右侧和底部预留区域,ScrollTop为顶部滚动预留高度
44 45 46 47
小程序实际显示首先会基于网页中指定的坐标和大小,再根据IframeX、IframeY、BarW、BarH设定的值做修正
OType 11启动WPS 文字处理;OType 12启动WPS 表格;OType 13启动WPS 演示;
Url:加载小程序所在的网页实际地址
Open:为需要打开的文档路径,磁盘目录斜杠用/
48
注意:Open和Url如果有特殊字符= & 双引号或中文等,需要用URL编码处理后传递
49 50
举例:
自动识别当前浏览器并启动WPS文字处理
W
wangzuohuai 已提交
51
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Title":"Office Applet","Flag":0,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"11","Open":"D:/Zorro/test.doc"}}
52 53

自动识别当前浏览器并启动WPS表格处理
W
wangzuohuai 已提交
54
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Title":"Office Applet","Flag":0,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"12","Open":"D:/Zorro/test.xls"}}
55 56

自动识别当前浏览器并启动WPS演示处理
W
wangzuohuai 已提交
57
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Title":"Office Applet","Flag":0,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"13","Open":"D:/Zorro/test.ppt"}}
58 59

自动识别当前浏览器指定位置自动适配网页大小启动:
W
wangzuohuai 已提交
60
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Title":"Office Applet","Flag":8,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"ScrollTop":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"11","Open":"D:/Zorro/test.doc"}}
61 62 63 64

当前页指定位置自动适配网页加载测试
http://zorrosoft.com/officeframe.html

W
wangzuohuai 已提交
65
启动后会先后收到三个JSON数据包
66
A、{"ret":0,"rid":1,"data":{"ID":3}}
W
wangzuohuai 已提交
67
代表小程序WS侦听服务就绪
W
wangzuohuai 已提交
68
B、{"event":"Wrl_Listen","aid":3,"data":{"SID":"123","PID":"WpsApplet","port":910}}
W
wangzuohuai 已提交
69
返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如打开一个文档。
70
返回ID为当前小程序运行ID,通过此ID,可执行Wrl_AppletControl、Wrl_AppletScroll、Wrl_AppletResize等命令。
W
wangzuohuai 已提交
71
C、{"event":"Wrl_AppletOK","aid":3,"rid":6,"data":{"SID":"123","PID":"WpsApplet","Port":910}}
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

2)、请求控制金山WPS内嵌网页小程序:
当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等
ID为启动小程序时返回JSON中的ID值,Code代表控制类型掩码:1关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,4和32隐藏后可通过8恢复显示
{"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}}

3)、请求滚动金山WPS内嵌网页小程序:
当前端截取到网页滚动时,需要调用此接口实现小程序和网页的滚动联动
ID为启动小程序时返回JSON中的ID值
Code为滚动方向1是水平直,2是垂直,3是同时
Left为横向滚动条位置,Top为纵向滚动条位置
{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}}

4)、请求改变金山WPS内嵌网页小程序显示位置或大小:
当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小
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}}

5)、请求设置网页预留右侧宽度和底部高度,滚动条信息、垂直滚动及水平滚动位置:
当小程序显示区域超过当前网页时,需去除滚动条的显示影响
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}}

W
wangzuohuai 已提交
99 100 101 102 103 104 105 106 107 108
6)、请求对小程序窗口做Alpha透明处理,便于前端临时显示覆盖到小程序窗口的菜单等:
ID为Wrl_OfficeApplet启动小程序时返回的ID值,Alpha为透明度百分比,1-100
{"req":"Wrl_AppletAlpha","rid":7,"para":{"ID":1,"Alpha":30}}

7)、请求对小程序窗口内容进行截图:
ID为启动小程序时返回JSON中的ID值,
File为指定截图文件保存路径或扩展名
Base64指定为1时代表返回BASE64编码的图像内容
{"req":"Wrl_AppletSnap","rid":10,"para":{"ID":1,"Base64":1,"File":".png"}}

W
wangzuohuai 已提交
109
8)、请求缩放内嵌网页小程序,用于浏览器网页按比例缩放,一般不需要处理:
110
ID为启动小程序时返回JSON中的ID值,Scall为缩放百分比
W
wangzuohuai 已提交
111
{"req":"Wrl_AppletScale","rid":11,"para":{"ID":1,"Scale":120}}
112 113 114

3、小程序安装、升级、卸载
1)、请求安装金山WPS内嵌网页小程序
W
wangzuohuai 已提交
115
请在测试网页输入框中,输入如下请求,然后点击发送,完成安装:
116

W
wangzuohuai 已提交
117
{"req":"Plugin_Install","rid":1,"para":{"Name":"金山WPS在线编辑小程序","PID":"WpsApplet","Date":"2021-06-01","Desc":"跨浏览器的金山WPS内嵌网页小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌文字、表格、演示等程序进行在线编辑或审阅各类办公文档。","DownAddr":"http://local.zorrosoft.com/Files/Plugin/WpsApplet.pid","MD5":"ADED936F718F7D7A8E9FB3749AAD9998","Version":"2.1.3.3","Size":786432,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"3B2F17E81B72C27980BF4E570591EE68AA2A713FE8343E60856F401EF9625B170E379D97EF9D7211A933BD4F03F989EAE4A7797868A6FE241F65C528274C03A3C4811C2B6A82CA6D91C154675C7210E16D24FAF7FBABEDBF642F88199E0B218C6799F2B7CE005C5D1F5C56ED301FD3B39EC80CDB81B1E5A1B36A913D3D56B81E66247F0CA194351B6DF0F6E6C104AD73BB810B18750DBAB26873377FEB8EAE4585CF672B7776FEA528CE5D4814C1A612A92A1E247C42D236116203A9444F47432C416348C5FA67246A9EB02AB17E734D6F889E0523A5453D883FD12BF96D9F7CB113756E3CF37F0F8DE9D0CCC9A2A7050AD723D425D649D7D20196B16FD367BE"}}
118 119 120 121 122 123

启动安装后,会不断收到安装进度直到安装结束。
在发布时,也可以把此小程序目录文件和中间件一起打包后发布,不用单独分发。

2)、请求升级金山WPS内嵌网页小程序:

W
wangzuohuai 已提交
124
{"req":"Plugin_Update","rid":1,"para":{"Name":"金山WPS在线编辑小程序","PID":"WpsApplet","Date":"2021-06-01","Desc":"跨浏览器的金山WPS内嵌网页小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌文字、表格、演示等程序进行在线编辑或审阅各类办公文档。","DownAddr":"http://local.zorrosoft.com/Files/Plugin/WpsApplet_Update.pid","MD5":"D33226BE94FB55C6E423004D34B2CC97","Version":"2.1.3.3","Size":786432,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"222E9EB0A283EB0B52FA4BB6E2534EB5159BCD5BC90FAD9D0F3132E00E19F4A562529CF211EC242C55B951E07929BDF99D55C4C0FC942073F715BF28C765F171890F45CA988C85DA6402052296E6837BFD39D8246F4A1E545DBF0548A40650C786AAB6EEC4089EF153B2EFA8072246F356DE19C0A4DBD2CD9A9C3F2D4CB6499A8ED768DD682D8BA4B9346F33991A62CFD8FE932974855191986320E86A44BABB74B5DAA09FDB4895E76FDA9B7B06B0C61A257CBF384BCEEC1E4F3D0EC1D085D189AEA8D0CB7531E33A67FB237CF1017568F915CBB0DC3DE4C5A7AFC12DADA819C55ECCD96B64B939AE9C1BDF032AE8FA100215008ED7F637674E6B0FA3EF1998"}}
125 126 127 128

以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。 

3)、请求卸载金山WPS内嵌网页小程序:
W
wangzuohuai 已提交
129
正式版需要添加TK校验,具体规则请参考SDK包中文档“PluginOK中间件安全解决方案.doc”,可在SDK包中的打包程序WrlPackage.exe的中间件维护生成带TK的请求。
W
wangzuohuai 已提交
130
{"req":"Plugin_Remove","rid":3,"para":{"PID":"WpsApplet","Type":8}}
131 132 133

4、金山WPS内嵌网页小程序转调用WPS软件的VBA接口,先根据Wrl_OfficeApplet请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令:

W
wangzuohuai 已提交
134 135
A、常用功能请求:
1)请求退出小程序,适用于Word、Excel、PPT软件
136
{"req":"Office_Exit","rid":1,"para":{}}
W
wangzuohuai 已提交
137
无返回,如有前端到此小程序的端口连接,会自动中断
138

W
wangzuohuai 已提交
139 140 141 142 143
2)请求关闭文档 Save为0代表如有修改不提示保存,适用于Word、Excel、PPT软件
{"req":"Office_Close","rid":2,"para":{"Save":"0"}}
返回:{"ret":0,"rid":2,"data":{"Ret":"0"}}
ret为请求返回值,0正常,非零不正常,不正常时请取和ret同级的错误描述err,下同
Ret为调用VBA接口对应函数返回值,0代表正常
144

W
wangzuohuai 已提交
145 146
3)请求打开文档 Open为打开文档路径,有中文或特殊字符等需要UrlEncode编码,适用于Word、Excel、PPT软件
打开前如已有文档打开,会自动关闭上一个文档,避免同时打开多个文档
W
wangzuohuai 已提交
147
{"req":"Office_Open","rid":3,"para":{"Open":"D:/Zorro/test.doc"}}
W
wangzuohuai 已提交
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
返回:{"ret":0,"rid":3,"data":{"Ret":"0"}}

4)请求保存,适用于Word、Excel、PPT软件,如是新建文档,会弹出保存对话框
{"req":"Office_Save","rid":4,"para":{}}
返回:{"ret":0,"rid":4,"data":{"Ret":"0"}}

5)请求另保存 NewFile为另保存路径,有中文或特殊字符等需要UrlEncode编码,适用于Word、Excel、PPT软件
{"req":"Office_SaveAs","rid":5,"para":{"NewFile":"D:/Zorro/test.xml"}}
返回:{"ret":0,"rid":5,"data":{"Ret":"0"}}

6)请求导出为PDF或XPS格式 NewFile为导出文档路径,有中文或特殊字符等需要UrlEncode编码,适用于Word、Excel软件
{"req":"Office_Export","rid":6,"para":{"NewFile":"D:/Zorro/test1.pdf"}}
返回:{"ret":0,"rid":6,"data":{"Ret":"0"}}

7)请求在当前光标位置插入图片 ImgFile为图片路径,有中文或特殊字符等需要UrlEncode编码,适用于Word软件
Link为1则只是链接到文件 Save保存到文档
{"req":"Office_InsertImg","rid":7,"para":{"ImgFile":"D:/Zorro/test.png","Link":"0","Save":"1"}}
返回:{"ret":0,"rid":7,"data":{"Ret":"0","Width":"1","Height":"1"}} Width和Height分别为插入图片的宽度和高度

8)请求在当前光标位置批量插入文字,适用于Word软件
{"req":"Office_Insert","rid":8,"para":[{"Paragraph":1},{"FontSize":"16","FontName":"宋体","Color":"0","Bold":"8","Text":"详情请点击这里:"},{"Paragraph":1},{"Address":"http://zorrosoft.com","Display":"佐罗软件官方网站"}]} 
分别为换行、插入指定字体和颜色值的文字再换行,插入一个超链接
返回:{"ret":0,"rid":8,"data":{"Ret":"0"}}

9)请求在当前光标位置执行退格操作Backspace,适用于Word软件
{"req":"Office_Backspace","rid":9,"para":{}}
返回:{"ret":0,"rid":9,"data":{"Ret":"0"}}

10)请求批量打印,适用于Word、Excel软件
Copies为打印份数,默认打印所有页面,打印到文件时,需要指定OutFile,有中文或特殊字符等需要UrlEncode编码
{"req":"Office_PrintOut","rid":10,"para":{"Copies":"1","OutFile":"D:/Zorro/testprint.pdf"}}
返回:{"ret":0,"rid":10,"data":{"Ret":"0"}}

11)请求移动光标位置,适用于Word软件
Up为向上,默认向下,Up为1向上,Unit移动单位(5是文字行数,7是屏幕区) Count为移动数量
{"req":"Office_MoveLine","rid":11,"para":{"Up":"0","Unit":"5","Count":"6"}}
返回:{"ret":0,"rid":11,"data":{"Ret":"0"}}

12)请求获取当前用户名,适用于Word、Excel软件
{"req":"Office_GetUserName","rid":12,"para":{}}
返回:{"ret":0,"rid":12,"data":{"Ret":"0","UserName":"test"}}

13)请求设置当前用户名,适用于Word、Excel软件
{"req":"Office_PutUserName","rid":13,"para":{"Name":"test"}}
返回:{"ret":0,"rid":13,"data":{"Ret":"0"}}

14)请求获取当前是否修订模式,适用于Word软件
{"req":"Office_GetTrackRevisions","rid":14,"para":{}}
返回:{"ret":0,"rid":14,"data":{"Ret":"0","TrackRevisions":"0"}}

15)请求设置当前是否修订模式,适用于Word软件
{"req":"Office_PutTrackRevisions","rid":15,"para":{"TrackRevisions":"1"}}
返回:{"ret":0,"rid":15,"data":{"Ret":"0"}}

16)请求修订模式后续操作,适用于Word软件
Type为操作类型,0默认代表切换修改模式,1代表接受所有修订 2代表拒绝所有修订
{"req":"Office_TrackRevisions","rid":16,"para":{"Type":"1"}}
返回:{"ret":0,"rid":16,"data":{"Ret":"0"}}

17)请求在当前位置添加批注,适用于Word软件
Text为添加批注的文字描述
{"req":"Office_InsertComment","rid":17,"para":{"Text":"批注内容"}}
返回:{"ret":0,"rid":17,"data":{"Ret":"0"}}
W
wangzuohuai 已提交
211

212
5、事件通知:
W
wangzuohuai 已提交
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
A、以下为Word程序通知
1) Office_DocClosed 文档关闭通知
{"event":"Office_DocClosed","data":{"Name":""}} Name被关闭文档名称

2) Office_DocChange 文档变化通知
{"event":"Office_DocChange","data":{}}

3) Office_DocNew 新文档通知
{"event":"Office_DocNew","data":{}}

4) Office_DocOpen 文档打开通知
{"event":"Office_DocOpen","data":{}}

5) Office_Quit 小程序退出通知
{"event":"Office_Quit","data":{}}
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243

B、PluginOK支持的事件通知:

1) 小程序是否响应了热键全屏
以下分别为Word字处理、Excel表格、Powerpoint演示程序的全屏事件通知
{"event":"WORD_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记
{"event":"EXCEL_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记
{"event":"PPT_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记

2) Wrl_AppletExit 小程序退出通知
{"event":"Wrl_AppletExit","data":{"ID":1}}

6、其它
请求参数的JSON数据包,请确保是UTF-8无签名的编码。
更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.doc”及“PluginOK中间件安全解决方案”。
如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938