1

PDFNet 6.5.0 の Android バージョンを使用しています。

PDFViewCtrl の垂直スクロールを、PDF Canvas 座標で表される PDF の絶対ポイントに設定する必要があります。

たとえば、2 ページ目の中央にズームしたいとします。

次のような PDF Canvas の位置で、y 座標を取得できます。

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

yの位置までスクロールするにはどうすればよいですか?

でやろうとしているのですが、このメソッドの有効なパラメータPDFViewCtrl#setVScrollPos()に変換する方法がわかりません。y

4

2 に答える 2

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のおかげで、私はこれにたどり着きました。トーマス・ホフマンは次のように説明しています。

最初に確認するのは、スクロール位置です。変換後の y は画面空間にありますが、SetX/YScrollPos はスクロール ビューアーの座標にあります。つまり、PDFViewCtrl の左上隅は、画面空間の位置 (0, 0) にありますが、スクロール座標の位置 (GetHScrollPos および GetVScrollPos) にあります。

于 2015-09-03T09:22:20.103 に答える