【问题标题】:Angular JS with PDFTron带有 PDFTron 的 Angular JS
【发布时间】:2018-08-31 21:39:50
【问题描述】:

我正在尝试获取一个 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 库,不幸的是我似乎在 DOM 中找不到 myWebViewer.getInstance().loadLocalFile 方法(未定义)。

如果第一次尝试在 angularjs 应用程序中使用 pdftron,将不胜感激。

注意:这是在指令中。

【问题讨论】:

  • 您是否有理由不直接将 URL 传递给 WebViewer?通过使用单个 GET 调用,您将阻止查看,直到下载整个 PDF。但是,如果您直接提供 URL,WebViewer 可能会在下载所有数据之前开始显示 PDF。
  • 我没有 URL 那是我的问题,我有一个 blob,如果我有 URL 就很容易了。
  • 能否提供变量someBlobValue的内容?
  • open 方法的第二个参数始终是 URL,而不是您要发送的 blob 内容

标签: javascript angularjs pdftron


【解决方案1】:

您需要等待包含 WebViewer 的 DOM 元素触发 ready 事件,以便定义从 getInstance() 返回的 ReaderControl 实例。

例如:

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

【讨论】:

    【解决方案2】:

    你的代码逻辑上没有错,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2017-01-30
      • 2014-08-03
      • 2014-08-22
      相关资源
      最近更新 更多