Проблема просмотра PDF-файлов с цифровым сертификатом в pdf.js - PullRequest
0 голосов
/ 08 января 2019

Мы настроили pdf.js для просмотра документов, загружаемых через веб-сайт, которые могут сильно различаться по своему содержанию. Некоторые из загруженных документов содержат цифровые подписи или сертификаты. Мы заметили, что при просмотре этих PDF-файлов в программе просмотра pdf.js они либо вызывают чрезмерную задержку, либо страница отображается как черная. Я не знаю, может ли это быть, потому что мы base64 кодируем PDF перед загрузкой в ​​просмотрщик или нет, но из-за этой проблемы я почесал голову и надеюсь на некоторые указатели.

Вот как мы загружаем документ в просмотрщик 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() при загрузке страницы

...