0

我使用 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 附带的内容。我只需要跳转页面而无需重新加载

4

2 回答 2

0

PDFObject.embed 不返回任何引用所以我查看了 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
于 2019-06-07T16:28:23.907 回答
0

就我而言,该pdfviewerid 不再可用。

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

代码截图

最后,通过我们拥有的参考,我们可以访问以下PDFViewerApplication对象并操作 PDF:

在此处输入图像描述

于 2020-08-20T18:39:16.850 回答