将PDFViewCtrl滚动设置为文档中的绝对位置



我使用的是Android版本的PDFNet 6.5.0。

我需要将PDFViewCtrl的垂直滚动设置为pdf中的一个绝对点,以pdf Canvas坐标表示。

例如,假设我想放大到第二页的中间位置。

我可以得到y坐标,在PDF Canvas的位置,像

int y = doc.getPage(1).getPageHeight() + (doc.getPage(2).getPageHeight() / 2)

如何滚动到y位置?

我正在尝试使用PDFViewCtrl#setVScrollPos(),但我不知道如何将y转换为此方法的有效参数。

您是否尝试使用PDFViewCtrl#scrollTo(int, int)?

。首先将点从PDF空间转换为画布空间(PDFViewCtrl#convPagePtToCanvasPt),然后滚动到位置。

虽然我已经接受了Shirley G的回答,但我还是发布了另一个答案来澄清。

棘手的是要将哪个数字作为参数传递给PDFViewCtrl#setVScrollPos(int)PDFViewCtrl#scrollTo(int, int)

  • 您需要使用PDFViewCtrl#convPagePtToScreenPt()将页面位置转换为物理屏幕点

  • 但是你也需要考虑到当前滚动视图的滚动偏移pdfViewCtrl#getVScrollPos()

如果你想在page中滚动到verticalPosition:

public void scrollToDocPosition( final int verticalPosition, final int page) {
            double[] screenPos = pdfViewCtrl.convPagePtToScreenPt(0, verticalPosition, page);
            pdfViewCtrl.setVScrollPos((int) screenPos[1] + pdfViewCtrl.getVScrollPos());
    }

我来到这个感谢https://groups.google.com/forum/?fromgroups#!搜索/pdfnet-sdk/scroll/pdfnet-sdk/7Wy00goWfyQ/t1tvApNDrr8J,其中Thomas Hoffman解释:

首先要看的是滚动位置。y后转换是在屏幕空间,而SetX/YScrollPos是在滚动查看器的坐标。也就是左上角PDFViewCtrl在屏幕空间的位置(0,0),但在位置(GetHScrollPos和GetVScrollPos)在滚动坐标

最新更新