📔 金山办公产品帮助中心

唤起WPS后无法打开文档

文档由 任财应 于 2022-09-27 22:49 创建,由 黄泺璇 于 2024-01-04 01:39 更新
文档标签:
文档分类:
858

场景:

问题现象:可以正常唤起WPS客户端,但文档没有打开
依照排查步骤进行排查定位

问题排查方向:

可能导致该现象的原因有以下几点:

1. 跨域问题导致(此问题多出现于开发阶段,WPS由低版本升级至高版本出现) 
2. 部署问题,WPS未能配置成功加载项(此问题多出现于开发阶段,更换安装包时缺少oem导致)
3. 业务系统用了https,但是安装包oem中没打入完整https相关配置。
4. 代码问题。(通常表现为,打开WPS调试器代码有报错)
5. 不落地打开接口不支持目标文件格式。(通常表现为部分文件能打开,部分文件不能)
6. 落地文件打开时,落地文件名不符合系统文件名命名标准。
7. 在安装加载项时,弹出了是否信任站点的弹框,点击了拒绝。
8. 网络原因,导致OA系统加载缓慢,影响唤起wps客户及打开文档的速度。
9. 使用了多进程动态传递模式,代码逻辑有误
10.离线部署,7z资源包损坏,无法正常解压。

排查步骤:

重启WPS的方法

  • [信创/Linux环境重启WPS] 终端执行quickstartoffice restart
  • [Windows环境重启WPS] 任务管理器直接关闭进程

第一步、打开WPS调试器

代码问题和部署问题判定标准:能否正常打开WPS调试器
开启WPS调试模式,通过浏览器唤起wps,然后新建一个文档,验证是否能打开调试器.

  • 如不能,为部署问题。 见下方部署问题排查。
  • 如可以,说明代码成功加载,见调试器报错,或断点排查。

参考:【打开调试模式

不能打开调试器的情况:

  1. 如果是https的系统,检查oem.ini文件[support]栏下,是否有以下配置项
    IgnoreSslErrors=true
    JsapiUseHttpsServer=true
    HttpsSecurityBypass=true
    
    如果没有,加上后重启WPS
    参考:【OEM打包配置说明
  2. 检查部署模式
    参考:【如何确定客户使用了哪种部署模式的加载项
    此三种模式中jsplugins.xml模式不推荐使用(需要oem配置的方式)
    参考:【三种部署模式之间的切换
  3. 删除jsaddons目录下的authwebsite.xml文件。
    参考:【jsaddons目录
  4. 升级wpsjsrpcsdk.js、wps.js和WPS至最新版本。
    wpsjsrpcsdk_v1.0.33
    wps_SilentSupport
    新版WPS安装包联系项目经理。
  5. 重启WPS,重新验证是否能打开文件。

可以打开调试器的情况:

  1. 如果alt+f12可以唤醒调试器,查看Console中是否有报错,NetWork中是否有报错。如果有报错分以下几种情况:

    1. 如果有 Blocked by CorsCORS ERROR 等关键词,则是跨域问题。
      参考:【跨域解决方案
    2. 如果报500,502,503等则是后端问题
    3. 前面的代码报错,导致阻断没执行到打开文件
  2. 不落地打开接口OpenFromUrl ,不支持目标文件格式。(通常表现为部分文件能打开,部分文件不能)
    注:不落地模式只支持标准的ooxml格式文件(表格:xlsx,xls 文字:doc,docx,演示:ppt,pptx)。如果是其他格式文档,那么请使用落地模式进行打开

  3. 落地文件打开时,需要先落地到系统磁盘中,落地文件名不符合系统文件名命名标准,导致落地失败或无法打开。
    系统命名要求:
    windows windows
    排查:common.js中DownloadFile方法里,输出path,在系统对应路径去寻找对应文件查看文件是否正常生成。
    注意:信创/Linux系统可能存在正常生成但无法打开的情况,也是因为文件名不符合规范。

  4. 文档url链接是否正确,排查步骤:

    • 浏览器中清除浏览器缓存(为了校验是否做了登录校验)
    • 打开浏览器调试器
    • 输出url地址直接访问测试
      注:url拿出来后,浏览器要清理缓存,再直接访问测试,如果跳转到系统首页,有可能是系统有身份认证导致。
      Documents.OpenFromUrl 不落地打开接口:不支持设置Cookie,可以使用一次性token认证
      落地打开方式:支持携带Cookie、自定义Header
    • 查看文档是否可以下载
    • 不落地模式时,url中尽量不要有特殊字符(如: 冒号、分号、反斜杠等)
    • 查看network中的文档下载的请求,查看请求的Content-Disposition
      image.png
    • 后端返回时,Content-Disposition的返回要求是:
      556991be7fbd06cdad790c33157d225d_WaeTw2HsZs0AAAAASUVORK5CYII=.png
    • name使用utf-8编码(可能造成乱码或者文档打不开的情况)
    • filename不要写成fileName
    • 文件名不要用双引号或者单引号引起来
    • 不要使用* =utf-8
  • 多进程动态传递模式报错,无法打开文件,解决方案:
    • 以阿里云demo为例,修改wps.js代码中,多进程二次封装函数(mult)中:wpsClient.notifyRegsitered = true;
    • sdk匹配当前客户端版本,建议使用最新稳定版本
    • 12xxx版本的oem中检查配置:EnableJsapiCustomProtocal=true
  • 离线部署,7z资源包损坏,无法正常解压,解决方案:
    • 使用wpsjs build 命令创建7z压缩包,并部署到服务器上。验证7z包是否有效:在浏览器地址栏访问7z压缩包url,下载到本地,看下是否可以正常解压。

如无法解决请提工单,需要提供上述排查结果

提交排查结果,例:

部署模式:publish在线打开
能否打开调试器:能
是否有报错:是
【报错截图】
排查进度:已经添加跨域返回头,但依旧报跨域问题

至少提交以下三条信息:

能打开调试器提交:部署模式、能否打开调试器、调试器是否有报错
不能打开调试器提交:部署模式、能否打开调试器、runParams接口调用截图

runparams接口调用结果查看

在调用打开文件时,会访问runParams接口,需要F12打开浏览器调试器后,点击打开文件。可以看到以下请求,提供以下两张截图:
image.png
image.png