OnlyOffice动态水印可通过三种方式实现:一、管理后台启用内置水印并配置动态变量;二、JWT令牌注入个性化水印参数;三、修改前端模板用Canvas绘制自定义覆盖层。

如果您在使用OnlyOffice文档服务器时希望防止内容被未授权复制或传播,可通过配置动态水印增强文档安全性。以下是实现OnlyOffice动态水印保护的具体方法:
一、通过Document Server管理界面启用内置水印功能
OnlyOffice Document Server 6.3及以上版本原生支持静态与动态水印配置,无需修改源码即可在管理后台启用并定制水印内容与样式。该方式适用于已部署独立Document Server且具备管理员权限的场景。
1、以管理员身份登录OnlyOffice Document Server管理控制台,地址通常为 https://your-domain.com/management。
2、在左侧导航栏点击 “设置” → “文档编辑器” → “水印” 选项卡。
3、勾选 “启用水印” 复选框。
4、在“水印文本”栏输入动态变量,例如 {user_name} / {date} / {ip_address}(仅当Document Server与JWT集成且传递了对应claim时生效)。
5、设置字体大小、透明度、旋转角度及颜色,推荐使用 15°倾斜、20%透明度、灰色#999999 以兼顾可读性与视觉干扰性。
6、点击 “保存更改”,重启documentserver服务使配置生效(执行 sudo supervisorctl restart all 或 systemctl restart onlyoffice-documentserver)。
二、通过JWT令牌注入动态水印参数
OnlyOffice支持在打开文档时通过JWT载荷(payload)传递水印元数据,Document Server将自动提取并渲染为个性化水印。该方式确保每位用户看到的水印内容唯一,且不依赖客户端环境。
1、确认您的应用后端已启用JWT签名,并在调用 /coauthoring/CommandService.ashx 或嵌入iframe URL前生成合法JWT。
2、在JWT payload中添加 "watermark": {"text": "{user_name} @ {ip}", "color": "#cccccc", "opacity": 0.15, "angle": 22} 字段。
构建并调试跨Office自动化流程,实现Word、Excel、PowerPoint之间的内容迁移,使用Open XML、VBA、python-docx、openpyxl、py...
3、确保JWT密钥与Document Server配置中的 token.inbox.inbound.secret 一致(位于 /etc/onlyoffice/documentserver/local.json)。
4、将生成的JWT作为 token 参数附加至文档加载URL,例如:
https://ds.example.com/...?token=eyJhbGciOiJIUzI1Ni...&filename=test.docx。
5、打开文档后,水印将按JWT中指定内容实时渲染,且不可通过前端DOM操作移除。
三、修改Document Server前端模板注入自定义水印脚本
对于需要更高定制自由度(如叠加图像水印、绑定会话ID哈希值)的场景,可直接修改Document Server前端资源,在编辑器渲染完成后动态插入CSS覆盖层。该方式需谨慎操作,且升级Document Server时需重新应用补丁。
1、定位到前端模板文件:/var/www/onlyoffice/documentserver/sdkjs/common/layer.js 或 /var/www/onlyoffice/documentserver/sdkjs/editor/editor.js(依版本而定)。
2、在编辑器初始化完成回调(如 window.Asc.plugin.executeMethod("AddOverlay", [...]))后插入水印绘制逻辑。
3、使用Canvas绘制含当前用户信息的斜向半透明文字层,并将其绝对定位覆盖于编辑区域顶层。
4、确保绘制逻辑中调用 Asc.scope.user_info 或从 window.location.search 解析传入参数获取动态字段。
5、执行 sudo supervisorctl restart ds-converter ds-docservice ds-spellchecker 重启全部服务组件。










