Угловой JS с PDFTron - PullRequest
       21

Угловой JS с PDFTron

0 голосов
/ 01 сентября 2018

Я пытаюсь получить BLOB-объект в виде URL, но я получаю сообщение об ошибке в этой строке:

xhr.send()

Сообщение об ошибке: angular.js:13920 Error: Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED.

Но в коде я использую xhr.open('GET', blobValue), как показано в моем коде здесь

                if(someBlobValue){
                    var viewerElement = $document[0].getElementById('viewer');
                    var myWebViewer = new PDFTron.WebViewer({
                        path: 'lib',
                        pdftronServer: 'https://demo.pdftron.com' // remove
                    }, viewerElement);

                    var xhr = new XMLHttpRequest;
                    xhr.responseType = 'blob';

                    xhr.onload = function() {
                        var recoveredBlob = xhr.response;

                        var reader = new FileReader;

                        reader.readAsDataURL(recoveredBlob);
                    };

                    xhr.open('GET', someBlobValue);
                    xhr.setRequestHeader('Content-type', 'application/pdf');
                    xhr.send(); //error here although its open?
                    //var file = new File([newValue], 'somefile.pdf');
                    myWebViewer.loadDocument(xhr.response, { filename: 'somefile.pdf'});

В настоящее время у меня есть документ в виде большого двоичного объекта, но я пытаюсь загрузить его в библиотеку pdftron, и, к сожалению, мне не удается найти метод myWebViewer.getInstance().loadLocalFile в DOM (он не определен).

Буду признателен за любые указатели, так как он впервые пытается использовать pdftron в приложении angularjs.

ПРИМЕЧАНИЕ : это внутри директивы.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

В вашем коде нет ничего плохого логически,

  • Вы просто забыли создать экземпляр объекта XHR здесь var xhr = new XMLHttpRequest;.
  • Вы можете исправить это, выполнив var xhr = new XMLHttpRequest();
0 голосов
/ 04 сентября 2018

Необходимо дождаться, пока элемент DOM, содержащий WebViewer, вызовет событие ready, чтобы определить экземпляр ReaderControl, возвращаемый из getInstance ().

Например:

$(viewerElement).on('ready', function() {
  myWebViewer.getInstance().loadLocalFile(someBlobValue);
});
...