NTKO WebOffice是重庆软航公司的一款能够在浏览器中直接编辑Microsoft Office、WPS、金山电子表等文档的控件,支持Word、Excel等多种文档格式。该控件能够在IE、Chrome等浏览器中运行,并支持强制痕迹保留、禁止拷贝、模版套红、全文批注等功能。
但是软航NTKO WebOffice控件现有版本依赖Manifest V2扩展技术支持才能正常运行,然而这个扩展技术到2025年6月在Chrome高版本上就彻底不支持了,现在Chrome 133开始的版本已经开始弹出警告,必须手工开启扩展支持才能正常运行。
2025年猿大师中间件发布了OCX网页内嵌程序,可以在最新Chrome等主流浏览器中直接内嵌本机OCX控件,使NTKO WebOffice在高版本浏览器继续使用不再是难题。
步骤:
第一步:下载安装猿大师中间件试用版,并获得试用授权,下载地址:http://www.yuanmaster.com/
第二步:打开测试网页测试,网址:http://test.yuanmaster.com/ocxfull.html
点击连接,并发送以下JSON:
{"req":"Wrl_AppletStart","rid":99,"para":{"Type":"0","Title":"ActiveX网页小程序","NodeName":"OcxWebApplet","PID":"OcxWebApplet","Flag":72,"Left":0,"Top":0,"Width":0,"Height":0,"IframeX":0,"IframeY":0,"Option":"0","Zoom":100,"ScrollTop":0,"Web": {"DataPath":"c:/OfficeDoc","ClassID":"{A39F1330-3322-4A1D-9BF0-0BA2BB90E970}"},"Open":"http://www.yuanmaster.com/Files/template.doc"}}
猿大师中间件网页内嵌NTKO WebOffice效果如下:
猿大师中间件也不仅仅支持NTKO WebOffice文档控件在最新Chrome中运行,金格iWebOffice、OfficeCtrl、微软DSOFramer、点聚等文档控件也毫无压力。
对于控件提供的开发接口,也提供了自动化的接口请求支持:
11)、请求获取属性值
Name 指定属性名称 如遇到取子接口的,名称增加子接口的名称,支持多级,比如获取VLC播放列表的数量名称用playlist.itemCount 下同
{"req":"OCX_GetProperty","rid":11,"para":{"Name":"src"}}
{"req":"OCX_GetProperty","rid":11,"para":{"Name":"volume"}}
{"req":"OCX_GetProperty","rid":11,"para":{"Name":"Toolbar"}}
{"req":"OCX_GetProperty","rid":11,"para":{"Name":"playlist.itemCount"}}
{"req":"OCX_GetProperty","rid":11,"para":{"Name":"input.rate"}}
{"req":"OCX_PutProperty","rid":11,"para":{"Name":"video.logo.opacity"}}
返回: {"ret":0,"rid":11,"data":{"Ret":0,"Val":""}}
如果返回的是自动化接口,Val的值类似这样的:playlist={CatchDispatch},需要继续调用这个自动化接口的属性或方法时,接下来的请求里指定参数{CatchDispatch},否则默认调用控件主接口的,下同
12)、请求设置属性
Name 指定属性名称 如遇到设置子接口的,名称增加子接口的名称,支持多级
Val 指定属性值,字符串用""包含,字符串中包含\或"等字符时,需要加转义符\,数值型不用"",BOOL类型设置真时数值是-1
当需要释放缓存的自动化接口时,Name可以指定为类似这样的playlist={CatchDispatch},Val设置为0或空
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"src","Val":"d:/zorro/test.pdf"}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"Toolbar","Val":-1}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"Visible","Val":-1}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"volume","Val":0}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"input.rate","Val":2}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"video.logo.opacity","Val":50}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"playlist={CatchDispatch}","Val"0}}
返回: {"ret":0,"rid":12,"data":{"Ret":0}}
13)、请求无传入参数方法
Name 指定方法名称 如遇到调用子接口的,名称增加子接口的名称,支持多级,比如调用VLC播放列表播放方法名称用playlist.play 下同
DID 也可以指定方法序号
{"req":"OCX_Invoke0","rid":13,"para":{"Name":"gotoFirstPage"}}
{"req":"OCX_Invoke0","rid":13,"para":{"Name":"gotoNextPage"}}
{"req":"OCX_Invoke0","rid":13,"para":{"Name":"playlist.play"}}
返回: {"ret":0,"rid":13,"data":{"Ret":0,"Val":""}}
14)、请求只传入1个参数方法
Name 指定方法名称 如遇到调用子接口的,名称增加子接口的名称,支持多级,比如调用VLC播放列表播放方法名称用playlist.add 下同
DID 也可以指定方法序号
Para1 对应参数值 ,字符串用""包含,字符串中包含\或"等字符时,需要加转义符\,数值型不用"";参数如果需要再次调用自动化接口获取的值,可以这样传参{DispatchPara}=playlist.itemCount 下同
{"req":"OCX_Invoke1","rid":14,"para":{"Name":"LoadFile","Para1":"d:/zorro/test.pdf"}}
{"req":"OCX_Invoke1","rid":14,"para":{"Name":"setShowToolbar","Para1":0}}
{"req":"OCX_Invoke1","rid":14,"para":{"Name":"video.logo.file","Para1":"D:\\Zorro\\test.png"}}
{"req":"OCX_Invoke1","rid":14,"para":{"Name":"playlist.add","Para1":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4"}}
返回: {"ret":0,"rid":14,"data":{"Ret":0,"Val":""}}
15)、请求只传入2个参数方法
Name 指定方法名称
DID 也可以指定方法序号
Para1和Para2分别对应参数1和2数值 如果需要传缓存的自动化接口,可以这样传参{CatchDispatch}=playlist
{"req":"OCX_Invoke2","rid":15,"para":{"Name":"printPages","Para1":1,"Para2":2}}
返回: {"ret":0,"rid":15,"data":{"Ret":0,"Val":""}}
16)、请求只传入3个参数方法
Name 指定方法名称
DID 也可以指定方法序号
Para1、Para2、Para3分别对应参数1、2和3的数值
{"req":"OCX_Invoke3","rid":16,"para":{"Name":"printPagesFit","Para1":"1","Para2":"2","Para3":"0"}}
返回: {"ret":0,"rid":16,"data":{"Ret":0,"Val":""}}
17)、请求只传入4个参数方法
Name 指定方法名称
DID 也可以指定方法序号
Para1、Para2、Para3、Para4分别对应参数1、2、3和4的数值
{"req":"OCX_Invoke4","rid":17,"para":{"Name":"setCurrentHighlight","Para1":255,"Para2":0,"Para3":255,"Para4":0}}
返回: {"ret":0,"rid":17,"data":{"Ret":0,"Val":""}}
18)、请求只传入5个参数方法
Name 指定方法名称
DID 也可以指定方法序号
Para1、Para2、Para3、Para4、Para5分别对应参数1、2、3、4和5的数值
福昕OFD版式办公套件OCX 调用打开文档
{"req":"OCX_Invoke5","rid":18,"para":{"Name":"openFile","Para1":"d:/zorro/test.pdf","Para2":"0","Para3":"","Para4":"","Para5":""}}
返回: {"ret":0,"rid":18,"data":{"Ret":0,"Val":""}}
19)、请求只传入6个参数方法
Name 指定方法名称
DID 也可以指定方法序号
Para1、Para2、Para3、Para4、Para5、Para6分别对应参数1、2、3、4、5和6的数值
{"req":"OCX_Invoke6","rid":19,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":""}}
返回: {"ret":0,"rid":19,"data":{"Ret":0,"Val":""}}
支持更多参数的接口也有,就不一一展示了。
当然这种方式也是可以暂时使用NTKO WebOffice控件的权宜之计,最好还是直接用更优秀的第三代在线编辑OFFICE——猿大师办公助手,功能更强大,性能更强悍,不惧怕浏览器升级,兼容性更好!