首页 > 解决方案 > 带有 PDFTron 的 Angular JS

问题描述

我正在尝试将 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'});

目前我将文档作为 blob,但我正在尝试将其加载到 pdftron 库中,不幸的是我似乎没有myWebViewer.getInstance().loadLocalFile在 DOM 中找到该方法(其未定义)。

将不胜感激任何指针,因为它是第一次尝试在 angularjs 应用程序中使用 pdftron。

注意:这是在指令中。

标签: javascriptangularjspdftron

解决方案


你的代码逻辑上没有错,

  • 您只是忘记在此处实例化 XHR 对象var xhr = new XMLHttpRequest;
  • 您可以通过这样做来纠正它var xhr = new XMLHttpRequest();

推荐阅读