Как получить данные с помощью надстройки из документа Office без метаданных (т.е. время создания)? - PullRequest
0 голосов
/ 18 февраля 2019

Есть функция, которая извлекает документ в формате PDF побайтово:

Office.initialize = function (reason) {
    $(document).ready(function () {
        // If not using Word 2016
        if (!Office.context.requirements.isSetSupported('WordApi', '1.1')) {
            $('#hash-button-text').text("Not supported!");
            return;
        }

        //$('#hash-button').click(calculate_hash);
        $('#btn').click(getFile);
    });
};

function getFile() {
    Office.context.document.getFileAsync(Office.FileType.Pdf, { sliceSize: 99 },
        function (result) {
            if (result.status == "succeeded") {
                var file = result.value;
                var sliceCount = file.sliceCount;
                var slicesReceived = 0, gotAllSlices = true, docdataSlices = [];
                getSliceAsync(file, 0, sliceCount, gotAllSlices, docdataSlices, slicesReceived);
            }
            else {
                console.log("Error");
            }
        }
    );
}

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;
            }
            docdataSlices[sliceResult.value.index] = sliceResult.value.data;
            if (++slicesReceived == sliceCount) {
                file.closeAsync();
                console.log("Done: ", docdataSlices);
            }
            else {
                getSliceAsync(file, ++nextSlice, sliceCount, gotAllSlices, docdataSlices, slicesReceived);
            }
        }
        else {
            gotAllSlices = false;
            file.closeAsync();
            console.log("getSliceAsync Error:", sliceResult.error.message);
        }
    });
}

Итак, около ~ 1800 байт есть такие байты, как "CreationDate(D:20190218150353+02'00...", которые в нашем случае не нужны.
Этоизвлекает весь файл PDF, который состоит из мета, но возможно ли получить его без него?

С уважением

1 Ответ

0 голосов
/ 19 февраля 2019

Метод document.getFileAsync всегда возвращает весь документ (включая метаданные);невозможно заставить его вернуть что-либо меньшее, чем весь документ.

...