В моем дополнении 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!