Javascript PDFView.page.getViewport()未定义?

Javascript PDFView.page.getViewport()未定义?,javascript,pdf,pdf.js,Javascript,Pdf,Pdf.js,因此,我使用的是normal viewer.html和单独的.js中包含的以下函数: function selectedPosition() { var visible = PDFView.getVisiblePages(); var firstPage = visible.first; var pageNumber = firstPage.id; var currentPage = PDFView.pages[pageNumber - 1]; var

因此,我使用的是normal viewer.html和单独的.js中包含的以下函数:

function selectedPosition()
{
    var visible = PDFView.getVisiblePages();
    var firstPage = visible.first;
    var pageNumber = firstPage.id;
    var currentPage = PDFView.pages[pageNumber - 1];

    var selecion = window.getSelection();
    var range = selecion.getRangeAt(0);
    var rect = range.getBoundingClientRect();

    var div = $('#viewer');
    var viewport = currentPage.getViewport(div.width / currentPage.getViewport(1.0).width); // Uncaught TypeError: undefined is not a function

    var point1 = viewport.convertToPdfPoint(rect.left - div.offset().left, rect.top - div.offset().top);
    var point2 = viewport.convertToPdfPoint(rect.right - div.offset().left, rect.bottom - div.offset().top);

    console.log(point1);
    console.log(point2);
}
代码应该做的是计算相对于pdf的矩形点,以便它们独立于滚动和缩放。 代码主要是从viewer.js复制的,那么为什么不定义getViewport呢

尝试

console.log(currentPage.getViewport(1.0));
产生相同的错误。我缺少什么?

我认为您可以使用调用PDFView.pages[pageNumber-1]返回的PageView对象的“viewport”属性。例如:

function selectedPosition()
{
    var visible = PDFView.getVisiblePages();
    var firstPage = visible.first;
    var pageNumber = firstPage.id;
    var currentPage = PDFView.pages[pageNumber - 1];

    ...

    //var viewport = currentPage.getViewport(div.width / currentPage.getViewport(1.0).width);
    var viewport = currentPage.viewport; // Should return a reference to the viewport for the page

    ...
}

未定义查看器的API:不推荐使用PDFView,请改用PDFViewerApplication。另外,PDFView.pages包含PageView对象而不是页面对象,因此getViewport在那里不可用。我应该使用什么来代替
PDFView.getVisiblePages()
getPage
然后呢?当textlayer(我需要)尚未完成时,pagerendered事件触发得太早。PDFViewerApplication.pdfViewer.\u getVisiblePages但是它可能是一个私有方法,将来可能会被删除。在新版本中,文本层将生成“textlayerrendered”事件。