【问题标题】:Not able to load header and footer when loading base64 encoded .docx file using OfficeJS API使用 OfficeJS API 加载 base64 编码的 .docx 文件时无法加载页眉和页脚
【发布时间】:2019-02-05 13:43:14
【问题描述】:

让我简单介绍一下场景:

  • 我们有 base64 编码的 .docx 文件。
  • 我们的 Word 插件有一个 我们要求内部 API 进行 base64 编码的功能 .docx 文件。
  • 此 base64 编码的 .docx 文件(包含页眉、页脚 和正文)使用 Word 加载项加载到 MS Word 中。
  • 问题是 文档正文已完美加载,但页眉和页脚未加载 在 MS Word 中加载。
  • 上面用来做的Office JS API是 Document.Body.insertFileFromBase64()。

使用正确的屏幕截图解释步骤:

第1步 创建一个包含页眉和页脚详细信息的示例数据文档,如屏幕截图所示。

步骤 - 2 获取上述.docx文件的Base64编码文件字符串。

步骤 - 3 我们创建了一个 angular js 1.7 和 angular 6 Office JS 插件应用程序,它接受 .docx base64 编码的文件字符串并将该文件加载到 MS Word 中。 3.1 Angular 6 Office JS 插件应用如下:

3.2 我们将步骤 - 2 中的 base64 编码文件字符串输入到我们开发的自定义 Word 插件中显示的文本框中。单击加载文件按钮时,我们的加载项会从 base64 编码字符串加载实际文件。

3.3 如以下截图所示,页眉和页脚消失了,MS Word 中只加载了正文。

3.4 开发的自定义Word Add-in中使用的Office JS API是context.Document.Body.insertFileFromBase64(, ) Office JS API CDN:https://appsforoffice.microsoft.com/lib/1/hosted/Office.js

请对此提供帮助,因为我们在应用程序中处于生产问题的阻止状态。

【问题讨论】:

    标签: ms-word office-js office-js-helpers


    【解决方案1】:

    这是由于 Word 的设计工作方式所致。

    页眉和页脚是节级属性 - 它们链接到分节符。默认情况下,Word 文档有一个分节符,默认页眉和页脚属于该分节符。

    将文件插入现有文档时,没有最后一个默认分节符(链接到最后一个段落标记)。传入内容采用目标部分的部分属性。这会切断页眉和页脚。

    可以工作的是在插入文档的末尾插入一个分节符,在插入之前,确保为那个部分定义了页眉和页脚.此附加分节符将导入现有文档并保留页眉和页脚。

    如果应该保留目标文档中现有的页眉和页脚,事情会变得相当复杂。在这种情况下,目标文档中需要一个额外的分节符以“保留”这些页眉和页脚。根据插入的顺序,可能还需要额外的分节符以确保页眉和页脚的内容彼此独立(默认情况下它们是链接,以便每个后续部分“继承”前一个)。

    另一种方法是让 Office JS 代码使用 JS API 获取页眉和页脚信息并将其单独写入目标文档。

    【讨论】:

    • 是的,这是设计使然。 (我们不想覆盖文档中现有的 heafers/footers。)正如 Cindy 建议的那样,在您插入文档后,您还需要插入页眉和页脚(如果您碰巧知道它们的内容)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    相关资源
    最近更新 更多