文档编辑器

开发者 · 嵌入

把文档编辑器嵌入你的 Web 应用

用一个 iframe 加 postMessage API,把 DOCX、XLSX、PPTX、CSV 编辑器加进你的产品。鉴权、文件访问和上传都留在你的应用里——编辑器只负责编辑,永远看不到用户的 token。

打开在线 demo →

编辑器完全在浏览器里用 OnlyOffice WebAssembly 引擎运行,文档在客户端渲染和编辑——你不需要部署文档服务器。推荐模式保持清晰边界: 父应用负责鉴权、拉取与保存;iframe 只负责编辑。token、cookie 和业务 API 都留在你的应用里。

一个 iframe 就能接入

<iframe
  id="documentEditor"
  src="https://edit.chaxus.com/?embed=1&embedOrigin=https://your-app.example.com"
  style="width: 100%; height: 720px; border: 0"
></iframe>

然后用 postMessage 和它通信。每条命令带一个 id 用来匹配回复,编辑器的每个事件都是 document:* 消息:

// 打开一个你的应用已经拉取好的文件(鉴权全在你这边)
iframe.contentWindow.postMessage(
  { id, type: 'document:open-buffer', payload: { fileName: 'report.xlsx', buffer } },
  'https://edit.chaxus.com'
);

// 要回编辑后的文件,再由你自己上传
iframe.contentWindow.postMessage({ id, type: 'document:save', payload: { targetExt: 'XLSX' } }, editorOrigin);
// → 编辑器回复 { type: 'document:saved', payload: { fileName, file } }

你能得到什么

工作原理

  1. 加入指向编辑器、带 ?embed=1 的 iframe,按布局设尺寸。
  2. document:ready 事件,再发送 document:open-urlopen-fileopen-buffer
  3. 用户就地编辑;除非你的应用主动发送,文件不会离开浏览器。
  4. 发送 document:save,编辑器通过 document:saved 返回编辑后的文件,由你的应用用自己的鉴权上传。
开源且可自托管。 基于 AGPL-3.0——读源码、自托管一份、看清边界是怎么设计的: github.com/ranuts/document。完整 API 参考: docs/embed-api.zh.md

常见问题

怎么嵌入这个文档编辑器?

加入一个指向编辑器、带 ?embed=1 的 iframe,再用 postMessage API 驱动它打开与保存文档。可运行 demo 在 /embed-demo.html

编辑器会看到我用户的鉴权 token 吗?

不会。鉴权、文件拉取和上传都留在你的应用里——你的应用用自己的凭据拉取文件、把二进制传给编辑器,token 和 cookie 永远不会进入 iframe。

嵌入的编辑器支持哪些文件格式?

DOCX、XLSX、PPTX 和 CSV,用 OnlyOffice WebAssembly 引擎在客户端编辑。保存命令可导出为 XLSX、DOCX、PPTX 或 CSV。

可以自托管或白标使用吗?

可以。它以 AGPL-3.0 开源、是纯静态文件,你可以自托管一份、在自己的域名下嵌入。

怎么限制哪个站点能和编辑器通信?

在 iframe URL 上加 embedOrigin 把消息锁定到指定 origin,并在你自己的消息处理里校验 event.origin