0

我正在尝试将 XOD 文档加载到 PDFTron WebViewer 中。据我在文档和示例中所读到的,这应该是一个简单的“即插即用”操作——当您指向一个文件时它应该可以简单地工作。理想情况下,在我的示例中,应该从服务中获取文档,如下所示:

fetch('/myservice/GetXOD')
.then(function(data) {
    $(function() {
        var viewerElement = document.getElementById("viewer");
        var myWebViewer = new PDFTron.WebViewer({
            initialDoc: data.body
        }, viewerElement);
    });
});

不幸的是,我收到以下错误:

Uncaught TypeError: Cannot read property 'DisplayModes' of undefined

我在 a 中这样做的原因fetch是因为我正在渲染 Handlebars 模板,并将数据传递给回调中的实例化。但是,我已将代码隔离到一个“空”的 HTML 文档中,在下面的简化示例中,我只是指向 PDFTron 在页面加载时提供的 XOD(fetch这次没有)。

$(function() {
    var viewerElement = document.getElementById("viewer");
    var myWebViewer = new PDFTron.WebViewer({
        initialDoc: 'GettingStarted.xod' // Using the XOD provided by PDFTron
    }, viewerElement);
});

不幸的是,这会返回一个不同的错误(HTTP 状态 416)。

Uncaught Error: Error loading document: Error retrieving file: /doc/WebViewer_Developer_Guide.xod?_=-22,. Received return status 416.

当我从本地主机上的 PDFTron 运行示例时,会出现相同的错误。

我完全不知道应该如何进一步调试 - 所有示例都假设一切都在开箱即用。

我应该注意,我实际上可以让 PDF 在 localhost 上正常工作,但不能在服务器上工作。XOD 在服务器和本地主机上都有问题。

4

1 回答 1

0

得知您在运行我们的样品时遇到问题,我深感抱歉。

您的错误消息显示 416,这意味着“请求的范围不可满足”。也许您的开发服务器不支持字节范围请求(https://en.wikipedia.org/wiki/Byte_serving)。

你可以尝试传递一个选项streaming: true吗?当流媒体为真时,您只是在前面请求整个文件,这对任何服务器来说都不是问题,但如果文件很大,这对 WebViewer 来说是个问题,因为它需要在开始时完全下载和解析是缓慢的。

于 2016-04-19T16:48:05.570 回答