参考图和以下步骤说明了在 ONLYOFFICE 文档服务器中共同编辑文档的过程。
<div id="placeholder"></div>
<script type="text/javascript" src="https://documentserver/web-apps/apps/api/documents/api.js"></script>其中 documentserver 是安装了 ONLYOFFICE 文档服务器的服务器的名称。
new DocsAPI.DocEditor("placeholder", { "document": { "fileType": "docx", "key": "Khirz6zTPdfd7", "title": "Example Document Title.docx", "url": "https://example.com/url-to-example-document.docx" }, "documentType": "word", "editorConfig": { "user": { "id": "78e1e841", "name": "John Smith" } }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50IFRpdGxlLmRvY3giLCJ1cmwiOiJodHRwczovL2V4YW1wbGUuY29tL3VybC10by1leGFtcGxlLWRvY3VtZW50LmRvY3gifSwiZG9jdW1lbnRUeXBlIjoid29yZCIsImVkaXRvckNvbmZpZyI6eyJ1c2VyIjp7ImlkIjoiNzhlMWU4NDEiLCJuYW1lIjoiSm9obiBTbWl0aCJ9fX0.6AcBUCbys9kQ7S982Qm4w1romVg86kZ4ECNsxDff5zU" });其中 example.com 是安装了 文档管理器 和 文档存储服务 的服务器的名称。
new DocsAPI.DocEditor("placeholder", { "document": { "fileType": "docx", "key": "Khirz6zTPdfd7", "title": "Example Document Title.docx", "url": "https://example.com/url-to-example-document.docx" }, "documentType": "word", "editorConfig": { "user": { "id": "F89d8069ba2b", "name": "Kate Cage" } }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50IFRpdGxlLmRvY3giLCJ1cmwiOiJodHRwczovL2V4YW1wbGUuY29tL3VybC10by1leGFtcGxlLWRvY3VtZW50LmRvY3gifSwiZG9jdW1lbnRUeXBlIjoid29yZCIsImVkaXRvckNvbmZpZyI6eyJ1c2VyIjp7ImlkIjoiRjg5ZDgwNjliYTJiIiwibmFtZSI6IkthdGUgQ2FnZSJ9fX0.rdmhKLzXwXXVTABioKy3R2-HGMBY5u4pbZ_TVhW2rJs" });其中 example.com 是安装了 文档管理器 和 文档存储服务 的服务器的名称。
为了打开文档进行编辑,配置初始化需要 key 参数,它允许用户从编辑器缓存中重新打开文档。 key是一个文本字段,它具有有限长度和多个符号。 它由软件集成商生成,并定义了唯一的文档标识符,服务用它来识别文档。
因此,用户必须拥有相同的key才能打开文档进行共同编辑。 文档编辑服务 识别试图打开文档的另一个用户(或 内联编辑器的另一个标签/编辑会话)的key,如果该key与文件的key匹配,则允许用户打开它。 如果key不同,则打开一个与其他文件和文件版本无关的新文件。
一旦发送保存文件的请求( status 值等于 2)并且操作完成(响应值等于 {"error":0}),则无法使用该key打开文档用于编辑。 编辑器加载了一条 错误消息。 但是,它可以用于从缓存中查看文档(如果存在)。
如果用户在编辑完成之前保存文档( status 等于 6),则不能更改key。 否则,共同编辑将停止。 请注意,在强制保存过程之后,对于刚刚进入当前编辑会话的新用户,也无法更改key。
添加脚本,用 key 1初始化文档编辑器。 key未知,打开文件的 URL 已指定。
Be sure to add a token when using local links. Otherwise, an error will occur.
关闭文档编辑器。
new DocsAPI.DocEditor("placeholder", { "document": { "fileType": "docx", "key": "Khirz6zTPdfd7", "title": "Example Document.docx", "url": "https://example.com/url-to-example-document.docx" }, "documentType": "word", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50LmRvY3giLCJ1cmwiOiJodHRwczovL2V4YW1wbGUuY29tL3VybC10by1leGFtcGxlLWRvY3VtZW50LmRvY3gifX0.GcpcY8sLCUDqbgqCLvPs6Z0xfBtayOy-GHEXYiZCpfs", ... });
其中example.com是安装了文档管理器和文档存储服务的服务器的名称。
添加脚本,使用相同 key 1初始化 文档编辑器。 未使用新 URL,因为key是已知的,并且文档已从编辑器缓存中重新打开。
new DocsAPI.DocEditor("placeholder", { "document": { "fileType": "docx", "key": "Khirz6zTPdfd7", "title": "Example Document 2.docx", "url": "https://example.com/url-to-example-document2.docx" }, "documentType": "word", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50IDIuZG9jeCIsInVybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vdXJsLXRvLWV4YW1wbGUtZG9jdW1lbnQyLmRvY3gifX0.aegFVaZpkqc5bEYmF-PQYf3MMFg7QvAfWeOnfDJeuTg", ... });
其中example.com是安装了文档管理器和文档存储服务的服务器的名称。
添加脚本,使用 key 2初始化另一个 文档编辑器 key未知, 打开文件的 URL 已指定。 即使这个 URL 和第一个场景中的 URL 相同,也有两个独立的编辑会话。
关闭文档编辑器。
new DocsAPI.DocEditor("placeholder", { "document": { "fileType": "docx", "key": "Mgetl3dYUppf2", "title": "Example Document.docx", "url": "https://example.com/url-to-example-document.docx" }, "documentType": "word", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJNZ2V0bDNkWVVwcGYyIiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50LmRvY3giLCJ1cmwiOiJodHRwczovL2V4YW1wbGUuY29tL3VybC10by1leGFtcGxlLWRvY3VtZW50LmRvY3gifSwiZG9jdW1lbnRUeXBlIjoid29yZCJ9.5YvlbNVbXFddzKBdz_qPpqgUX_JrUHBWCGRQ5YgVp_w", ... });
其中example.com是安装了文档管理器和文档存储服务的服务器的名称。
添加脚本,使用 key 1初始化另一个 文档编辑器。 这个key是已知的,文档从编辑器缓存中重新打开。 由于这个key与第二个场景中的key相同,因此以共同编辑模式打开文档。
在不关闭文档的情况下获取当前文档状态。 forcesave 参数允许您在编辑器初始化的自定义部分中执行此操作。
new DocsAPI.DocEditor("placeholder", { "document": { "fileType": "docx", "key": "Khirz6zTPdfd7", "title": "Example Document.docx", "url": "https://example.com/url-to-example-document.docx" }, "documentType": "word", "editorConfig": { "customization": { "forcesave": true } }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50LmRvY3giLCJ1cmwiOiJodHRwczovL2V4YW1wbGUuY29tL3VybC10by1leGFtcGxlLWRvY3VtZW50LmRvY3gifSwiZG9jdW1lbnRUeXBlIjoid29yZCIsImVkaXRvckNvbmZpZyI6eyJjdXN0b21pemF0aW9uIjp7ImZvcmNlc2F2ZSI6dHJ1ZX19fQ.dlIJqq6tH9ncQmXQV-gCi4Zc7sqYhGS5RwvpiIZGZXA", ... });
其中example.com是安装了文档管理器和文档存储服务的服务器的名称。
添加脚本,初始化另一个 文档编辑器。 force saving成功后,当前编辑会话的新用户不会更改key。 因此, 必须使用 key 1,以便和来自第二和第四个场景的用户进入相同的共同编辑会话。
使用 key 1关闭所有三个编辑会话。 所有更改均已成功保存。 保存文档后,必须重新生成key。
new DocsAPI.DocEditor("placeholder", { "document": { "fileType": "docx", "key": "Khirz6zTPdfd7", "title": "Example Document.docx", "url": "https://example.com/url-to-example-document.docx" }, "documentType": "word", "editorConfig": { "callbackUrl": "https://example.com/url-to-callback.ashx" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50LmRvY3giLCJ1cmwiOiJodHRwczovL2V4YW1wbGUuY29tL3VybC10by1leGFtcGxlLWRvY3VtZW50LmRvY3gifSwiZG9jdW1lbnRUeXBlIjoid29yZCIsImVkaXRvckNvbmZpZyI6eyJjYWxsYmFja1VybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vdXJsLXRvLWNhbGxiYWNrLmFzaHgifX0.L53bCRlJyvIf-C7bcKYM2WMfmk4FeZIoeDaEpc5IxXA", ... });
其中example.com是安装了文档管理器和文档存储服务的服务器的名称。
添加脚本,初始化 文档编辑器,以便查看已经创建的文档。 可以使用Key 1。
new DocsAPI.DocEditor("placeholder", { "document": { "fileType": "docx", "key": "Khirz6zTPdfd7", "title": "Example Document.docx", "url": "https://example.com/url-to-example-document.docx" }, "documentType": "word", "editorConfig": { "mode": "view" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50LmRvY3giLCJ1cmwiOiJodHRwczovL2V4YW1wbGUuY29tL3VybC10by1leGFtcGxlLWRvY3VtZW50LmRvY3gifSwiZG9jdW1lbnRUeXBlIjoid29yZCIsImVkaXRvckNvbmZpZyI6eyJtb2RlIjoidmlldyJ9fQ.wpEk-zrrGq5hKHCm6sAhl_tb51n56th-q-K52Oeq1a4", ... });
其中example.com是安装了文档管理器和文档存储服务的服务器的名称。
添加脚本,初始化 文档编辑器,以便编辑已经创建的文档。 Key 1 无法使用,因为它在文件保存后已更改。 发生 错误。
关闭文档编辑器。
new DocsAPI.DocEditor("placeholder", { "document": { "fileType": "docx", "key": "Khirz6zTPdfd7", "title": "Example Document.docx", "url": "https://example.com/url-to-example-document.docx" }, "documentType": "word", "editorConfig": { "mode": "edit" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50LmRvY3giLCJ1cmwiOiJodHRwczovL2V4YW1wbGUuY29tL3VybC10by1leGFtcGxlLWRvY3VtZW50LmRvY3gifSwiZG9jdW1lbnRUeXBlIjoid29yZCIsImVkaXRvckNvbmZpZyI6eyJtb2RlIjoiZWRpdCJ9fQ.rSc0yYe3_2u7N_uaxZcDQ6vC_d5ZWU5LFkkGSow5UDY", ... });
其中example.com是安装了文档管理器和文档存储服务的服务器的名称。
有两种模式可以实时协作文档 — 自动和手动
您可以使用editorConfig.coEditing参数更改协同编辑模式:
var docEditor = new DocsAPI.DocEditor("placeholder", { "editorConfig": { "coEditing": { "mode": "fast", "change": true }, ... }, ... });
默认情况下使用自动模式,并定义实时协同编辑。所有更改都会自动保存,无法重做上次撤消的操作。此模式在用户编辑文本时显示用户光标和工具提示及其名称
在手动模式下,您需要使用保存按钮来同步您和其他用户所做的更改。在您单击此按钮之前,其他人所做的更改将被隐藏。当多个用户同时编辑一个文档时,编辑的文本用不同颜色的虚线标记。
当用户通过单击保存按钮保存更改时,其他用户将收到有关更新的注释。 要接受它们并保存您自己的更改以显示给其他用户,请单击。按钮 位于顶部工具栏的左上角。更新将突出显示。