1

让我简要介绍一下场景:

  • 我们有 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 在此处输入图像描述

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

4

1 回答 1

2

这是由于 Word 的设计方式。

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

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

可行的方法是在插入文档的末尾插入分节符,然后再插入,确保为该定义了页眉和页脚。此附加分节符将导入现有文档并保留页眉和页脚。

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

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

于 2019-02-05T15:58:09.703 回答