在大多数人认知中OnlyOffice 的协同编辑能力已经足够满足多人在线编辑场景。但当 OnlyOffice 被应用到法院庭审、远程听证、会议记录、指挥调度等专业场景时会发现一个问题文档内容虽然实时同步了但人员关注的位置并没有同步。这也是本次基于 OnlyOffice 9.x 的一个深度定制项目所解决的问题。一、业务背景某法院庭审系统中书记员负责实时记录庭审内容法官查看庭审笔录律师查看庭审笔录其他旁听人员查看庭审笔录系统采用 OnlyOffice Word 编辑器作为庭审记录载体。理论上OnlyOffice 协同编辑已经能够实现书记员输入 → 所有人实时看到内容变化但在实际使用过程中却出现新的问题。例如书记员已经记录到第 20 页第20页 ↓ 书记员正在输入而某律师因为查看前面的内容页面停留在第 5 页第5页 ↓ 正在翻阅历史记录虽然数据已经同步成功文档内容同步了光标位置同步了但观看人员并不知道书记员当前记录到了哪里。需要频繁寻找当前输入位置。庭审过程中效率非常低。二、OnlyOffice 原生能力存在的问题场景OnlyOffice 原生能力存在的问题文档内容同步支持无问题协同编辑支持无问题光标显示支持只能看到协作者光标页面滚动同步不支持无法自动跟随页码同步不支持不知道主控端所在位置缩放比例同步不支持不同终端显示差异较大强制观看模式不支持无法统一控制主控端广播页面状态不支持无法实现屏幕联动观看端跟随开关不支持无法自主选择换句话说OnlyOffice 解决的是内容协同而司法庭审场景需要的是视图协同这是两个完全不同层面的能力。三、定制目标本次项目最终实现主控端看到什么观看端就可以同步看到什么。同时保留观看端自由查看能力。整体模式如下最终形成主控模式书记员控制全场视图。跟随模式观看端自动跟随书记员。自由模式观看端独立浏览历史内容。四、总体技术方案系统架构如下核心思想把 OnlyOffice 的文档协同扩展为视图协同。五、OnlyOffice 核心改造点本项目并非简单插件开发。由于官方接口无法满足需求因此对 OnlyOffice 进行了底层增强。1、自定义协作者广播通道官方协同编辑消息机制无法直接用于页面同步。因此新增BroadcastMessage()能力。支持当前文档内广播所有协作者接收主控端忽略自身消息实现主控端 ↓ 广播消息 ↓ 服务端 ↓ 所有观看端2、新增页面状态采集 API为了实现精准跟随。需要获取状态用途当前页码页面定位缩放比例统一显示滚动位置页面同步光标位置输入区域定位可视区域高度分辨率适配新增接口getCurrentPage() getZoom() getScrollPosition() getCursorPosition()用于实时采集页面状态。3、扩展插件通信机制OnlyOffice 插件原生能力有限。因此增加编辑器 → 插件 插件 → 编辑器双向通信机制。支持获取编辑器状态获取页码信息获取滚动位置调整页面位置调整缩放比例接收广播消息形成完整事件体系。六、屏幕跟随插件设计在此基础上开发独立插件插件入口位于顶部工具栏 ↓ 插件面板 ↓ 屏幕跟随点击后打开左侧侧边栏。主控端界面☑ 庭审主控模式开启后开始广播页面状态包括页码缩放比例滚动位置输入位置观看端界面☑ 跟随主控端或☐ 自由查看三种工作模式模式说明主控模式广播页面状态跟随模式自动同步定位自由模式不受影响退出模式停止同步七、最难解决的问题不同分辨率适配如果简单同步滚动条位置主控端1920×1080 观看端1366×768结果会出现光标被挡住输入区域不在可视范围页面跳动因此本项目采用输入位置可视区域算法而不是简单同步滚动值。同步逻辑效果24寸显示器笔记本双屏显示都能保证当前输入位置可见而不是简单跳转到相同坐标。八、性能表现项目验收指标指标要求页面同步延迟≤2秒编辑同步实时浏览器兼容Chrome浏览器兼容Edge文档类型DOCXOnlyOffice版本9.x实际测试中页面同步接近实时输入区域持续可见不影响原有协同编辑能力九、适用于哪些行业场景虽然最初来源于法院项目。但实际上可应用于大量行业。行业场景法院庭审笔录检察院讯问记录公安审讯记录政务会议纪要企业高层会议教育在线授课培训讲义同步指挥中心实时调度本质上属于“主讲人视图同步”能力十、总结OnlyOffice 原生协同编辑解决的是内容同步而本项目实现的是视图同步通过对 OnlyOffice 9.x 进行深度定制新增协作者广播通道新增页面状态采集 API新增编辑器与插件双向通信机制开发屏幕跟随插件实现跨分辨率智能定位最终实现主控端实时记录观看端实时跟随。对于法院庭审、远程听证、会议记录、在线培训等场景这类能力往往比单纯的协同编辑更有价值。这也是标准版 OnlyOffice 社区版和商业版均不具备的一项行业级定制能力。相关资源OnlyOffice最新版本镜像https://onlyoffice.moqisoft.com/docs/install/docker版本介绍https://onlyoffice.moqisoft.com/docs/product/summary技术交流183026419QQ群