记 onlyoffice 保存不生效

背景

项目部署了 onlyoffice 容器来实现 word 文件编辑及预览。

现有如下现象:

  1. 编辑文档时,Ctrl + S 保存后,发现文件未更新到本地,了解到 onlyoffice 会先将改动缓存起来,不会马上调用回调 URL 保存更改到本地。
  2. 编辑完文件,关闭编辑器,文档长时间未保存到本地。
  3. 编辑完一个文档后,关闭编辑器,再打开编辑器编辑另一个文档,发现第一个文档的改动会过几秒更新到本地。

刚开始猜测 onlyoffice 的机制即编辑新文件时,刷新现有缓存到回调 URL,后面发现,实际上是因为编辑新文件时,触发了编辑器关闭事件,onlyoffice 收到事件后才会请求回调完成保存。比如,不编辑新文件,直接刷新网页,发现第一个文档的改动也会过几秒更新到本地。

解决

这里前端的问题是,关闭编辑器时,没有真正把编辑器关闭,而需要刷新网页才触发编辑器关闭事件。

这里更进一步,开启强制保存,Ctrl + S 会立马调用回调 URL。

1、进入 docker 容器,修改下面的配置文件:

/etc/onlyoffice/documentserver/local.json

开启services.CoAuthoring.autoAssembly.enable

{
  "services": {
    "CoAuthoring": {
      "autoAssembly": {
        "enable": true,
        "interval": "5m"
      }
    }
  }
}

其中services.CoAuthoring.autoAssembly.interval定义自动强制保存的间隔时间(分钟)。

顺便提一下,可通过services.CoAuthoring.server.savetimeoutdelay设置关闭编辑的文件后的转换开始延迟时间(以毫秒为单位),也就是关闭编辑器后,调用回调 URL 的延迟时间。

修改配置后重启 onlyoffice 容器。

2、修改编辑初始化参数editorConfig.customization.forcesave为 true:

"editorConfig": {
    "callbackUrl": "",
    "customization": {
        "forcesave": "true"
    }
}

参考:保存文件 | ONLYOFFICEOnlyOffice 开启保存按钮功能(J2EE)

posted @ 2025-04-23 21:00  Higurashi-kagome  阅读(1390)  评论(0)    收藏  举报