使用 OfficeJS 加载 base64 编码的 .docx 文件时无法加载页眉和页脚 API
Not able to load header and footer when loading base64 encoded .docx file using OfficeJS API
让我简要介绍一下场景:
- 我们有 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 Angular6 Office JS Add-in应用程序如下:
3.2 我们将步骤2中的base64编码文件字符串输入到我们开发的自定义Word插件中显示的文本框中。单击加载文件按钮时,我们的加载项会从 base64 编码的字符串中加载实际文件。
3.3 如下截图所示,在MS Word中页眉页脚消失,只加载正文。
3.4 Office JS API 用于开发的自定义 Word 加载项是 context.Document.Body.insertFileFromBase64(, )
Office JS API CDN:https://appsforoffice.microsoft.com/lib/1/hosted/Office.js
请帮助解决这个问题,因为我们的应用程序处于生产问题的阻止状态。
这是由于 Word 的设计工作方式所致。
页眉和页脚是 节级 属性 - 它们链接到分节符。默认情况下,Word 文档有一个分节符,默认的页眉和页脚属于分节符。
将文件插入现有文档时,没有最后一个默认分节符(链接到最后一个段落标记)。传入内容采用目标部分的部分属性。这将切断页眉和页脚。
可以的工作是在插入文档的末尾插入一个分节符,在插入之前,确保为 [=22= 定义了页眉和页脚]那个部分。此附加分节符将导入现有文档并保留页眉和页脚。
如果要保留目标文档中现有的页眉和页脚,事情会变得更加复杂。在这种情况下,目标文档中需要一个额外的分节符,以便 "hold" 这些页眉和页脚。根据插入的顺序,可能还需要额外的分节符以确保页眉和页脚的内容相互独立(默认情况下它们是 链接 以便每个上一节的后续部分 "inherits")。
另一种方法是让 Office JS 代码使用 JS API.
获取页眉和页脚信息并将其分别写入目标文档。
让我简要介绍一下场景:
- 我们有 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 Angular6 Office JS Add-in应用程序如下:
3.2 我们将步骤2中的base64编码文件字符串输入到我们开发的自定义Word插件中显示的文本框中。单击加载文件按钮时,我们的加载项会从 base64 编码的字符串中加载实际文件。
3.3 如下截图所示,在MS Word中页眉页脚消失,只加载正文。
3.4 Office JS API 用于开发的自定义 Word 加载项是 context.Document.Body.insertFileFromBase64(, )
Office JS API CDN:https://appsforoffice.microsoft.com/lib/1/hosted/Office.js
请帮助解决这个问题,因为我们的应用程序处于生产问题的阻止状态。
这是由于 Word 的设计工作方式所致。
页眉和页脚是 节级 属性 - 它们链接到分节符。默认情况下,Word 文档有一个分节符,默认的页眉和页脚属于分节符。
将文件插入现有文档时,没有最后一个默认分节符(链接到最后一个段落标记)。传入内容采用目标部分的部分属性。这将切断页眉和页脚。
可以的工作是在插入文档的末尾插入一个分节符,在插入之前,确保为 [=22= 定义了页眉和页脚]那个部分。此附加分节符将导入现有文档并保留页眉和页脚。
如果要保留目标文档中现有的页眉和页脚,事情会变得更加复杂。在这种情况下,目标文档中需要一个额外的分节符,以便 "hold" 这些页眉和页脚。根据插入的顺序,可能还需要额外的分节符以确保页眉和页脚的内容相互独立(默认情况下它们是 链接 以便每个上一节的后续部分 "inherits")。
另一种方法是让 Office JS 代码使用 JS API.
获取页眉和页脚信息并将其分别写入目标文档。