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

时间:2015-08-27 15:23:15

标签: android scroll coordinate-systems pdftron pdfnet

我正在使用Android版的PDFNet 6.5.0。

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

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

我可以在PDF Canvas位置获得y坐标,如:

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

如何滚动到y位置?

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

虽然我接受了Shirley G的回答,但我发布了另一个答案以便澄清。

棘手的一位是作为参数传递给PDFViewCtrl#setVScrollPos(int)PDFViewCtrl#scrollTo(int, int)的数字

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

  • 但您还需要考虑滚动视图的当前滚动偏移量pdfViewCtrl#getVScrollPos()

所以,如果你想在verticalPosition中滚动到page

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#!searchin/pdfnet-sdk/scroll/pdfnet-sdk/7Wy00goWfyQ/t1tvApNDrr8J感谢托马斯霍夫曼解释:

  

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