尽管我已经接受了 Shirley G 的回答,但我还是发布了另一个答案以进行澄清。
棘手的一点是将哪个数字作为参数传递给 PDFViewCtrl#setVScrollPos(int)
或PDFViewCtrl#scrollTo(int, int)
所以,如果你想滚动到verticalPosition
in 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,Thomas Hoffman 解释道:
首先要看的是滚动位置。转换后的 y 在屏幕空间中,而 SetX/YScrollPos 在滚动查看器的坐标中。也就是说,PDFViewCtrl 的左上角在屏幕空间的位置 (0, 0),但在滚动坐标的位置 (GetHScrollPos 和 GetVScrollPos)