2016-08-17 5 views
0

SharePointから読み込まれた定義済みのテンプレート(docx)ドキュメントをユーザーが選択できるWord Addinを開発しています。ウィザードを使用して、ユーザーはドキュメントにコンテンツコントロールを設定します。これまでのところ非常に良い経験。ドキュメントを挿入するときにヘッダーが表示されない

ただし、ヘッダーを含むdocxファイルを読み込むときに問題が発生します。

私はDOCXファイルをロードするために、この機能を使用してい

:(下の完全なコードを)

body.insertFileFromBase64(templateDoc.base64String, Word.InsertLocation.end); 

動作しますが、時にはソースドキュメントのヘッダが存在しないこと。または、それらがすべてのページにある他の時間、最初のページが異なる必要があります。

質問: ヘッダーとフッターを含む文書を挿入する必要がありますか、何か間違っていますか?

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

私がやっているとの違いは何ですか?

+0

Word.InsertLocation.replaceに切り替えると、ヘッダー/フッターが正しく挿入されますか?私は、既存のコンテンツがあるときにWordがヘッダー/フッターを挿入していないと思われます。 –

+0

ご質問が不明な場合は申し訳ありませんが、文書にdocxファイルを挿入します。ソースファイルには最初のページにヘッダーはありませんが、挿入後最初のページにヘッダーがあります。だからソースと同じではありません。私はヘッダーをクリアするいくつかの問題がありますが、それらは今のところ私の場合には回避策があります。 –

答えて

1

insertFileFromBase64メソッドを使用してファイルを挿入すると、ドキュメントのヘッダー/フッターもcustomXMLPartも置き換えられません(すでにXMLPartsのヘッダーとフッターが存在する可能性があります)。

したがって、ヘッダーとフッターを更新する必要がある場合は、ファイルの挿入後に行う必要があります。 (APIを使用すると、各セクション、最初のページ、さらには奇数ページの単語でサポートされている3種類のヘッダーを挿入できます)

希望します。 ありがとう! Juan。

+0

これは役に立ちます。 –

関連する問題