Как кодировать не-ascii содержимое слова doc с помощью Office.js? - PullRequest
0 голосов
/ 24 сентября 2019

В моем дополнении Office.js мне нужно преобразовать содержимое документа Word в base64 для передачи на веб-сайт.В настоящее время я делаю это:

  function Uint8ToString(u8a){
    var CHUNK_SZ = 0x8000;
    var c = [];
    for (var i=0; i < u8a.length; i+=CHUNK_SZ) {
      c.push(String.fromCharCode.apply(null, u8a.subarray(i, i+CHUNK_SZ)));
    }
    return c.join('');
  }

function getSlice(myFile) {
  myFile.getSliceAsync(0, function (slice) {
    if (slice.status !== Office.AsyncResultStatus.Succeeded) {
      return;
    }
    var a = new Uint8Array(slice.value.data);
    var fileData = btoa(Uint8ToString(a));
    myFile.closeAsync();
    postDocData(fileData) // This does the AJAX POST to my website
  });
}

Это работает за исключением того, что не-символы ascii отбрасываются.

Я пытался использовать этот ответ на несколько связанный вопрос, но послеb64decoding на сайте, результат не является действительным документом MS Word.

Должна быть очень распространенная задача, поэтому надеяться, что у кого-то есть хорошее решение.Должен работать на IE11, так как это внутренний браузер для Office.js!

1 Ответ

0 голосов
/ 24 сентября 2019

Использование должно использовать Office.context.document.getFileAsync API в Office.js.Инструкции на Получите весь документ из надстройки для Word .

...