我正在使用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
转换为此方法的有效参数。
答案 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)滚动坐标