文件編輯器

開發者 · 嵌入

把文件編輯器嵌入你的 Web 應用

用一個 iframe 加 postMessage API,把 DOCX、XLSX、PPTX、CSV 編輯器加進你的產品。鑑權、檔案訪問和上傳都留在你的應用裡——編輯器只負責編輯,永遠看不到使用者的 token。

開啟線上 demo →

編輯器完全在瀏覽器裡用 OnlyOffice WebAssembly 引擎執行,文件在客戶端渲染和編輯——你不需要部署文件伺服器。推薦模式保持清晰邊界: 父應用負責鑑權、拉取與儲存;iframe 只負責編輯。token、cookie 和業務 API 都留在你的應用裡。

一個 iframe 就能接入

<iframe
  id="documentEditor"
  src="https://document26.pages.dev/?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://document26.pages.dev'
);

// 要回編輯後的檔案,再由你自己上傳
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/anomixer/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