
字节笔记本
2026年9月24日 · 约 6 分钟读完
网页 Word 一键用本地 WPS 打开编辑,正解是 publish 模式
需求很常见:网页上有一个 Word 文件,旁边放一个按钮,用户点一下,文件就用本地的 WPS 打开编辑——类似微软 Office 那个 ms-word:ofe|u| 协议的体验。
微软有公开、稳定的 URI Scheme,WPS 这边却没有一个文档化的等价物。但这不代表做不了。本文把搜到的资料和真实案例整理成三条路线,以及企业内网场景下真正能落地的那个方案。
先排除两条路
WPS WebOffice 开放平台(solution.wps.cn):服务端生成文档 URL,前端用 iframe/SDK 在浏览器里内嵌 WPS 在线编辑引擎。注意它不是唤起本地客户端,而是网页内编辑,适合 SaaS 做"文档协作",需要申请 AppID。如果你的需求就是"在线编辑",这条最稳;如果要"用本地 WPS 打开",它不对。
自己猜一个 URI Scheme:WPS 桌面版安装后确实会在系统里注册协议处理器(类似迅雷的 thunder://),但具体协议名没有可靠公开文档。想确认可以在 Windows 上查注册表 HKEY_CLASSES_ROOT 里 wps/kso 相关项,看它注册了哪些协议和调用参数——但把没把握的字符串写进产品里风险自负。
官方机制是什么:wpsjs-rpc-sdk
确认的官方机制是 wpsjs-rpc-sdk,核心是 WpsInvoke.InvokeAsHttp / InvokeAsHttps,配套还有 WpsInvoke.IsClientRunning(先探测客户端在不在跑,决定"直接打开"还是"提示下载 WPS")。
工作原理要说准确:
- 加载项本质是一个跑在 WPS 客户端里的 HTML/JS 页面,通过 WPS JS API 操作 wps.Application.ActiveDocument 这类对象,能读写文档、控制书签表格;
- 网页怎么唤起:InvokeAsHttp 本质是浏览器页面往 WPS 客户端打一个 HTTP(S) 请求,带上加载项名称、要执行的函数名和参数(比如"打开这个文件 URL 并进入编辑"),WPS 收到后自己拉起(如果没在跑)、加载对应加载项、执行那个函数;
- 加载项怎么装到用户机器上:靠 oem.ini 配置文件里的 jsplugins.xml 地址——WPS 启动时自动去这个地址拉取加载项清单,装到本地 jsaddons 目录。
这里有个门槛:要让所有装了 WPS 的用户都自动拉到你的加载项,通常需要把 jsplugins.xml 地址交给 WPS 官方,让他们把你的加载项打进"二次打包"的 WPS 安装包里。也就是说面向公众用户的通用方案,实际上绕不开跟金山合作定制发行包。
真实落地案例是有的:Coremail 企业邮箱的 @coremail/wps-plugin,用户在网页邮箱里点附件直接用本地 WPS 打开预览/编辑,部署方式是把 plugins 目录放到自己网站的可访问路径下,前端 npm i @coremail/wps-plugin 调用。
关键纠正:企业内网的正解是 publish 模式
一个常见误解要纠正:企业内部场景反而不应该优先用 jsplugins.xml 模式——那个模式需要官方二次打包合作。publish 模式才是内网首选:纯前端调用本地端口,在客户端本地自动生成配置文件,完全不需要跟 WPS 官方打交道。
具体落地可以参考开源方案 herman-hang/wps。
两个关键本地路径(IT 统一管控机器时先确认好):
- 加载项管理目录 jsaddons:Windows 在 %appdata%\kingsoft\wps\jsaddons,Linux 在 ~/.local/share/Kingsoft/wps/jsaddons
- 配置文件 oem.ini:Windows 在安装路径\WPS Office\版本号\office6\cfgs\,Linux 在 /opt/kingsoft/wps-office/office6/cfgs/
- 用 publish 模式时,要保证 oem.ini 里 JsApiPlugin 是 false 或被注释掉
前端接入三步:
- 按顺序引入 config.js、wpsjsrpcsdk.js、wps.js
- config.js 里配 MODE(1 = publish 模式)、WPS_URL / ETO_URL / WPP_URL(对应你自己部署的加载项资源地址,需以 / 结尾)
- 按钮点击时调用:
_WpsInvoke([{
"OpenDoc": {
uploadPath: "你的文档保存接口",
fileName: "http://your-domain/file/xxx", // 网页上那个 Word 文件的下载地址
uploadFieldName: "file",
userName: "打开人姓名",
headerToken: "登录token",
openName: "显示的文件名.docx"
}
}])编辑完,WPS 会把文件回传到 uploadPath 指定的接口——"编辑完自动同步回网页"这一层就是这么实现的。
两个一定要知道的坑
- 鉴权:默认示例只有 Word(type=wps)走了带 token 的上传路径;PPT 和 Excel 要自己在 common.js 里给上传请求加 x-gv-jwt-token 请求头,否则身份验证不过;
- 版本硬要求:企业版 ≥ 11.8.2.8808,个人版 ≥ 11.1.0.9566,Linux 企业版 ≥ 11.8.2.9346。太老的版本 JSAPI 不稳定。企业内网统一管控机器的话,这条正好顺带把 WPS 版本锁死到达标版本。
怎么选
- 公众网站、人人可点:绕不开 WPS 开放平台(在线编辑)或与金山的加载项合作(二次打包);
- 企业内部系统、机器可统一管控:publish 模式 + oem.ini/jsaddons 预置 + 版本锁死,不用求任何人;
- 只是想"能打开就行":直接让浏览器下载文件(设好扩展名和 MIME),靠系统文件关联弹出"用 WPS 打开"——少编辑回传那一层,但成本几乎为零。
先想清楚你的场景属于哪一类,再动手。



