Header not showing up when I'm inserting a document
我正在开发一个 Word 插件,用户可以在其中选择一些从 SharePoint 加载的预定义模板 (docx) 文档。用户通过向导设置文档中的内容控件。到目前为止,体验非常好。
但是,我在加载带有标题的 docx 文件时遇到了问题。
我正在使用这个函数来加载 docx 文件:(下面的完整代码)
1 | body.insertFileFromBase64(templateDoc.base64String, Word.InsertLocation.end); |
这可行,但有时源文档的标题不存在。或者其他时候它们在所有页面上,而第一页应该不同。
问题:
是否应该插入带有页眉和页脚的文档?我做错了什么吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | private applyTemplate(template: Template): void { if (!Office.context.requirements.isSetSupported("WordApi", 1.2)) { this.errorMessage = 'Deze versie van Word wordt niet ondersteund'; this.showError = true; return; } let calls: [ ng.IPromise<TemplateFile> ] = [ this.appService.getTemplateDocument(template.templateId) ]; this.q.all(calls) .then((results: any[]) => { let templateDoc: TemplateFile = results[0].data; Word.run((context) => { let body = context.document.body; let sections = context.document.sections; context.load(sections, 'body/style'); body.clear(); return context.sync() .then(() => { sections.items[0].getHeader(Word.HeaderFooterType.primary).clear(); sections.items[0].getFooter(Word.HeaderFooterType.primary).clear(); return context.sync() .then(() => { body.insertFileFromBase64(templateDoc.base64String, Word.InsertLocation.end); this.appService.setTemplateSelected(template); return context.sync() .then(() => { this.go('/customers'); this.scope.$apply(); }, ((result: OfficeErrorMessage) => { this.setErrorState(result); })); }, ((result: OfficeErrorMessage) => { this.setErrorState(result); })); }, ((result: OfficeErrorMessage) => { this.setErrorState(result); })); }); }, ((result: ng.IHttpPromiseCallbackArg<ErrorMessage>) => { this.errorMessage = result.data.exceptionMessage; this.showError = true; this.scope.$apply(); })); } |
***编辑
我看到这是一个新版本:
https://github.com/OfficeDev/office-js-docs/blob/WordJs_1.3_Openspec/word/resources/application.md
和我做的有什么区别?
这是设计行为,当您使用 insertFileFromBase64 方法插入文件时,我们不会替换文档的页眉/页脚和 customXMLParts(那里可能已经有页眉和页脚,对于 XMLParts 也是如此)。
因此,如果您需要更新页眉和页脚,则必须在插入文件后进行。 (使用 api,您可以为每个部分、第一页、偶数页、奇数页插入 word 中支持的 3 种类型的标题)
希望这会有所帮助。
谢谢!
胡安。