2017-07-28 6 views
1

私は、1つまたは私たちのアプリケーション用のWordアドインで作業しています。このWordアドインを使用して、保存されたWordテンプレートをアプリケーションからWordに送信します。ヘッダーとフッターが単語javacript apiにバインドされていません

ヘッダーとフッターが含まれているテンプレートを使用すると、これらはWord文書に表示されません。私は(Office.jsで非常に具体的な概念である「結合」のように)あなたはこの質問に「結合」によって何を意味するかわからない

function setDocumentDataBase64(data) { 
    Word.run(function (context) { 
      // Create a proxy object for the document body. 
      var body = context.document.body; 
      //cleaning old context 
      //body.clear(); 
      body.insertFileFromBase64(data, Word.InsertLocation.replace); 
      return context.sync().then(function() { 
       alert.success("Document inserted"); 
      }); 
     }) 
     .catch(function (error) { 
      console.log('Error: ' + JSON.stringify(error)); 
      if (error instanceof OfficeExtension.Error) { 
       console.log('Debug info: ' + JSON.stringify(error.debugInfo)); 
      } 
     }); 
} 

答えて

2

:ここ

はコードです。私はあなたがしようとしているのは、range.insertFileFromBase64経由でヘッダー/フッターを含む文書を挿入することであり、挿入の後にヘッダーとフッターが表示されない場合、その場合は設計上の問題であり、現在のドキュメントのヘッダー/フッターを置き換えたくありません。この方法の目的は、ドキュメント全体を置き換えるのではなく、ドキュメントのチャンクを再利用することです。

ヘッダーを変更する必要がある場合は、手動で変更する必要があります。

(実際に新しい文書ウィンドウを開いた)createDocument APIをプレビューすることができますし、必要なものかもしれません。

これが役に立ちます。感謝! ありがとう! Juan。

これは、現在のドキュメントのBASE64を取得するサンプルコードです:

function getFile(){ 
 
     Office.context.document.getFileAsync(Office.FileType.Compressed, { sliceSize: 4194304 /*64 KB*/ }, 
 
      function (result) { 
 
       if (result.status == "succeeded") { 
 
        // If the getFileAsync call succeeded, then 
 
        // result.value will return a valid File Object. 
 
        var myFile = result.value; 
 
        var sliceCount = myFile.sliceCount; 
 
        var slicesReceived = 0, gotAllSlices = true, docdataSlices = []; 
 
        console.log("File size:" + myFile.size + " #Slices: " + sliceCount); 
 

 
        // Get the file slices. 
 
        getSliceAsync(myFile, 0, sliceCount, gotAllSlices, docdataSlices, slicesReceived); 
 
       } 
 
       else { 
 
        app.showNotification("Error:", result.error.message); 
 
       } 
 
      }); 
 

 
    
 
    
 
    } 
 

 

 
    function getSliceAsync(file, nextSlice, sliceCount, gotAllSlices, docdataSlices, slicesReceived) { 
 
     file.getSliceAsync(nextSlice, function (sliceResult) { 
 
      if (sliceResult.status == "succeeded") { 
 
       if (!gotAllSlices) { // Failed to get all slices, no need to continue. 
 
        return; 
 
       } 
 

 
       // Got one slice, store it in a temporary array. 
 
       // (Or you can do something else, such as 
 
       // send it to a third-party server.) 
 
       docdataSlices[sliceResult.value.index] = sliceResult.value.data; 
 
       if (++slicesReceived == sliceCount) { 
 
        // All slices have been received. 
 
        file.closeAsync(); 
 
        onGotAllSlices(docdataSlices); 
 
       } 
 
       else { 
 
        getSliceAsync(file, ++nextSlice, sliceCount, gotAllSlices, docdataSlices, slicesReceived); 
 
       } 
 
      } 
 
      else { 
 
       gotAllSlices = false; 
 
       file.closeAsync(); 
 
       console.log("getSliceAsync Error:", sliceResult.error.message); 
 
      } 
 
     }); 
 
    } 
 

 
    function onGotAllSlices(docdataSlices) { 
 
     var docdata = []; 
 
     for (var i = 0; i < docdataSlices.length; i++) { 
 
      docdata = docdata.concat(docdataSlices[i]); 
 
     } 
 
     var fileContent = new String(); 
 

 
     for (var j = 0; j < docdata.length; j++) { 
 
      fileContent += String.fromCharCode(docdata[j]); 
 
     } 
 
     
 
    
 

 

 
     var mybase64 = window.btoa(fileContent); 
 
     console.log("here is the base 64", mybase64); 
 
     // Now all the file content is stored in 'fileContent' variable, 
 
     // you can do something with it, such as print, fax... 
 
    }

+0

はい、私は、現在のドキュメントにだけでなく、ヘッダーとフッターを交換したいです。 –

+0

そして、今私は体を置き換えることができるだけですが、同じ文書でヘッダーとフッターを置き換える方法があります。 –

+0

私たちにとって有益なリンクや例があれば、私はcreateDocument APIを見つけることができます。ありがとうKapil –

関連する問題