如何跳转到呈现的pdf页面

how to jump to page of rendered pdf

我将 pdfobject 与 forcePDFJS 一起使用,后者使用 pdfjs viewer.js 来呈现 pdf。一旦它们被呈现,我需要能够跳转到页面而无需重新加载文档。文档可能非常大

我看到一些关于使用 PDFApplicationViewer.pdfview.currentPageNumber 的提及。但我还没有看到如何正确使用它的好例子

我看过两个使用 PDFApplicationViewer 的例子 1. PDFApplicationViewer.pdfview.currentPageNumber = pagNum; 2. document.getElementById('mycanvas').contentWindow.PDFApplicationViewer.pdfview.currentPageNumber = pagNum;

虽然第二个更有意义我不确定元素的 contentWindow 对象来自哪里。我假设 pdfobject 嵌入了一些我也可以访问但我无法弄清楚的东西..

另外,因为我真的找不到很多关于这个的东西..这有可能吗..

出于时间限制的原因,我不想使用 pdfjs 组合一个新的查看器。我喜欢 viewer.html 附带的内容。我只需要在不重新加载的情况下跳转页面

PDFObject.embed 没有 return 任何参考所以我查看了 pdfObject 代码以查看它是如何嵌入 pdf 的..

为此,需要一个 iframe 才能正常工作。因此,当使用 pdfobject 渲染时,我使用如下配置:

通知forcePDFJS=true

    if(!pageNum)
    pageNum=1;
var options = {
    pdfOpenParams: {
        view: "FitV",
        page: pageNum               
    },
    forcePDFJS: true,
    PDFJS_URL: "../pdfjs/web/viewer.html"
};

这是有效的代码

var pdfviewer = document.getElementById('pdfviewer');//get the viewer element
var contenttag =  pdfviewer.getElementsByTagName("iframe")[0]//got this from pdfobject code
contenttag.contentWindow.PDFViewerApplication.pdfViewer.currentPageNumber = parseInt(pageNum);//change the page

就我而言,pdfviewer ID 不再可用。

PDFObject 执行 return 它创建的 iframe 的引用。我使用的是基本 HTML + JS,所以我必须保存对全局 window 对象的引用,以便能够从项目中的任何地方访问它。

最后,根据我们的参考,我们可以如下访问 PDFViewerApplication 对象并操作 PDF: