首页 > 解决方案 > 如何在没有元数据(即创建时间)的 Office 文档中使用 Add-in 程序获取数据?

问题描述

有一个函数可以逐字节检索 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 文件,但是没有它是否可以得到它?

此致

标签: pdfms-wordoffice-js

解决方案


document.getFileAsync方法将始终返回整个文档(包括元数据);不可能让它返回少于整个文档的任何内容。


推荐阅读