跳到主要内容

文档历史记录

文档编辑器可以显示文本文档、电子表格、演示文稿和PDF的版本历史记录。版本数据本身由文档存储服务存储——每次编辑会话结束后,ONLYOFFICE 文档会返回变更信息,集成商将其与文档一起保存。然后,文档编辑器在侧面板中将此历史记录显示为版本列表,用户可以选择任何版本进行预览。

以下图表和步骤解释了在ONLYOFFICE 文档中查看文档历史记录的工作方式。

文档历史

  1. 用户在文档编辑器中点击版本历史记录按钮。
  2. 文档编辑器文档存储服务请求文档版本列表。
  3. 文档存储服务返回版本列表,包括要显示的版本。
  4. 文档编辑器文档存储服务请求所选版本的数据。
  5. 文档存储服务返回所选版本文件的链接。
  6. 文档编辑器显示所选版本。如果用户选择其他版本,则重复步骤4–6。
  7. 用户点击关闭历史记录按钮,文档编辑器返回正常编辑模式。

实际操作方法

  1. 创建一个.html文件,用于打开文档

  2. 在编辑器配置中添加onRequestHistory事件处理程序。当用户打开版本历史记录时,此事件将触发。在处理程序中,调用refreshHistory方法并传入完整的版本列表。要突出显示每个版本中的各个更改,请按照突出显示更改中的说明传递额外数据。

    function onRequestHistory() {
    docEditor.refreshHistory({
    currentVersion: 2,
    history: [
    {
    created: "2010-07-06 10:13 AM",
    key: "af86C7e71Ca8",
    user: {
    id: "F89d8069ba2b",
    name: "Kate Cage",
    },
    version: 1,
    },
    {
    created: "2010-07-07 3:46 PM",
    key: "Khirz6zTPdfd7",
    user: {
    id: "78e1e841",
    name: "John Smith",
    },
    version: 2,
    },
    ],
    })
    };

    const config = {
    events: {
    onRequestHistory,
    },
    };

    const docEditor = new DocsAPI.DocEditor("placeholder", config);

    打开文件

  3. 添加onRequestHistoryData事件处理程序。当用户从列表中选择一个版本时,此事件将触发并传入版本号。在处理程序中,调用setHistoryData方法并传入该版本文件的绝对URL。

    调用setHistoryData时,必须包含token以验证参数。

    function onRequestHistoryData(event) {
    const version = event.data
    docEditor.setHistoryData({
    fileType: "docx",
    key: "Khirz6zTPdfd7",
    token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tZXhhbXBsZS1kb2N1bWVudC5kb2N4IiwidmVyc2lvbiI6Mn0.iRcdHve235L5K1e29SmUBkuHcxb63WHRko51WMJlmS0",
    url: "https://example.com/url-to-example-document.docx",
    version: 2,
    })
    };

    const config = {
    events: {
    onRequestHistoryData,
    },
    };

    const docEditor = new DocsAPI.DocEditor("placeholder", config);

    历史记录

  4. 添加onRequestRestore事件处理程序。当用户点击恢复按钮时,此事件将触发并传入所选版本的数据。在处理程序中,将恢复的版本保存到您的服务器上,然后调用refreshHistory重新加载版本列表。

    function onRequestRestore(event) {
    const fileType = event.data.fileType
    const url = event.data.url
    const version = event.data.version

    docEditor.refreshHistory({
    currentVersion: 2,
    history: [
    {
    created: "2010-07-06 10:13 AM",
    key: "af86C7e71Ca8",
    user: {
    id: "F89d8069ba2b",
    name: "Kate Cage",
    },
    version: 1,
    },
    {
    changes,
    created: "2010-07-07 3:46 PM",
    key: "Khirz6zTPdfd7",
    serverVersion,
    user: {
    id: "78e1e841",
    name: "John Smith",
    },
    version: 2,
    },
    ],
    })
    };

    const config = {
    events: {
    onRequestRestore,
    },
    };

    const docEditor = new DocsAPI.DocEditor("placeholder", config);

    onRequestRestoreonRequestRestore

  5. 添加onRequestHistoryClose事件处理程序。当用户点击关闭历史记录按钮时,此事件将触发。在处理程序中,重新初始化编辑器为编辑模式——例如,通过重新加载页面。

    function onRequestHistoryClose() {
    document.location.reload()
    };

    const config = {
    events: {
    onRequestHistoryClose,
    },
    };

    const docEditor = new DocsAPI.DocEditor("placeholder", config);

    onRequestHistoryCloseonRequestHistoryClose

  6. 在浏览器中打开您的.html文件。

  7. 在文档编辑器菜单中打开版本历史记录选项。

突出显示更改

如果文档版本是使用文档编辑器创建的,则在查看历史记录时可以突出显示该版本中的各个更改。要启用此功能,文档存储服务必须保存ONLYOFFICE 文档在保存每次编辑会话时返回的额外数据。

备注

当服务器版本更新时,文档编辑器不会使用changes数据来突出显示历史记录中的更改。它只会在changesurl参数中返回已更改的文档。

除了已更改的文档本身之外,文档编辑服务还会发送:

  • history——包含每个更改的时间戳和作者,显示在版本历史记录侧面板中。将此数据作为传递给refreshHistory的对象中每个版本的changes属性传递。

    docEditor.refreshHistory({
    currentVersion: 2,
    history: [
    {
    created: "2010-07-06 10:13 AM",
    key: "af86C7e71Ca8",
    user: {
    id: "F89d8069ba2b",
    name: "Kate Cage",
    },
    version: 1,
    },
    {
    changes,
    created: "2010-07-07 3:46 PM",
    key: "Khirz6zTPdfd7",
    serverVersion,
    user: {
    id: "78e1e841",
    name: "John Smith",
    },
    version: 2,
    },
    ],
    })

    其中changesserverVersion是保存文档后从历史记录对象返回的值。

    备注

    ONLYOFFICE 文档会突出显示从当前文档会话开始所做的更改,而不是从文档版本开始时的更改。即使在一个会话期间创建了多个文档版本,该会话中的所有更改都将被突出显示。因此,您无法在文档历史记录中看到使用强制保存选项创建的文档版本。

  • changesurl——包含编辑数据的zip文件的绝对URL,用于突出显示特定版本的更改。保存此文件,并在调用setHistoryData时将其地址作为changesUrl参数传递。还必须在previous.url中包含前一个文档版本的链接。

    调用setHistoryData时,必须包含token以验证参数。

    docEditor.setHistoryData({
    changesUrl: "https://example.com/url-to-changes.zip",
    fileType: "docx",
    key: "Khirz6zTPdfd7",
    previous: {
    fileType: "docx",
    key: "af86C7e71Ca8",
    url: "https://example.com/url-to-the-previous-version-of-the-document.docx",
    },
    token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaGFuZ2VzVXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tY2hhbmdlcy56aXAiLCJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwicHJldmlvdXMiOnsiZmlsZVR5cGUiOiJkb2N4Iiwia2V5IjoiYWY4NkM3ZTcxQ2E4IiwidXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tdGhlLXByZXZpb3VzLXZlcnNpb24tb2YtdGhlLWRvY3VtZW50LmRvY3gifSwidXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tZXhhbXBsZS1kb2N1bWVudC5kb2N4IiwidmVyc2lvbiI6Mn0.ril3Ol3rvYne3g0dG8TdKCiwJ7-7kkYGc6-XWMvp8FU",
    url: "https://example.com/url-to-example-document.docx",
    version: 2,
    })
    注意

    changesurl请求是在浏览器中从添加的具有documentserver域的iframe中发出的,其中documentserver是安装了ONLYOFFICE 文档的服务器名称。为了正常运行,必须允许跨源HTTP请求(CORS)。这可以通过使用Access-Control-Allow-Origin标头来实现。您可以注册一个免费的ONLYOFFICE云,并使用其公共IP地址或公共DNS,这些可以在云控制台的实例部分找到。

    变更目录