2017-07-28 1 views
1

Ich arbeite an einem Word-Add-in für eine oder unsere Anwendungen. Verwenden Sie dieses Word-Add-In, um gespeicherte Word-Vorlagen von unserer Anwendung an Word zu senden.Kopf- und Fußzeile ist nicht verbindlich in Word javascript api

Wenn ich eine Vorlage verwenden, die eine Kopf- und Fußzeile enthält, werden diese nicht im Word-Dokument angezeigt. Hier

ist der Code:

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)); 
      } 
     }); 
} 

Antwort

2

Ich bin nicht sicher, was Sie unter „Bindung“ auf diese Frage (als „verbindlich“ ist ein sehr spezifisches Konzept in Office.js). Ich vermute, dass Sie versuchen, ein Dokument mit Kopf-/Fußzeilen über range.insertFileFromBase64 einzufügen, und Sie sehen nicht die Kopf- und Fußzeilen nach dem Einfügen, wenn dies der Fall ist ein Design-Problem, und der Grund, Wir möchten die Kopf-/Fußzeile des aktuellen Dokuments nicht ersetzen. Das Ziel der Methode besteht darin, Teile von Dokumenten wiederzuverwenden und nicht das gesamte Dokument zu ersetzen.

Wenn Sie die Kopfzeile ändern müssen, müssen Sie dies manuell tun.

Sie können die createDocument API (wer öffnet tatsächlich ein neues Dokumentfenster) in der Vorschau und möglicherweise was Sie brauchen erkunden.

Hoffe, das hilft. danke! Juan.

dies ist der Beispielcode die base64 des aktuellen Dokuments zu bekommen:

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

Ja, ich möchte den Header ersetzen und auch in dem aktuellen Dokument Fußzeile. –

+0

Und im Moment bin ich nur in der Lage, den Körper nur zu ersetzen, gibt es eine Möglichkeit, die Kopf- und Fußzeile in demselben Dokument zu ersetzen. –

+0

Wo kann ich createDocument API finden, wenn Sie irgendeine Verbindung oder irgendein Beispiel haben, das für uns vorteilhaft ist. Danke Kapil –

Verwandte Themen