在pdf.js

时间:2019-01-08 16:28:17

标签: javascript base64 certificate pdf.js

我们已经设置pdf.js来查看通过网站上传的文档,这些文档的内容可能相差很大。上载的某些文档包含数字签名或证书。我们已经注意到,当在pdf.js查看器中查看这些PDF时,它们会导致极度滞后或页面呈现为黑色。我不知道这是否是因为我们在将PDF加载到查看器之前是否对base64进行了编码,但是这个问题使我抓狂了,并希望有一些指针。

这是我们将文档加载到pdf.js查看器中的方式

    function getBase64PDF() {

    function arrayBufferToBase64(buffer) {
        let binary = '';
        let bytes = new Uint8Array(buffer);
        let len = bytes.byteLength;
        for (let i = 0; i < len; i++) {
            binary += String.fromCharCode(bytes[i]);
        }
        return window.btoa(binary);
    }

    var url = foo;
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'arraybuffer';

    xhr.onload = function(e) {
        // response is unsigned 8 bit integer
        var responseArray = new Uint8Array(this.response);
        var pdfData = arrayBufferToBase64(responseArray);
        document.getElementById('pdf_viewer').contentWindow.postMessage(pdfData, '*');
    };

    xhr.send();

}

我们还在脚本中其他位置包括指向以下pdf.js源文件的链接: https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.402/pdf.js https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.402/pdf.worker.js https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.402/pdf_viewer.js

然后在页面加载时运行getBase64PDF()

0 个答案:

没有答案