2015-08-27 2 views
1

Я использую версию PDFNet 6.5.0 для Android.Установите PDFViewCtrl в абсолютное положение в документе

Мне нужно установить вертикальную прокрутку PDFViewCtrl в абсолютную точку в pdf, выраженную в координатах PDF Canvas.

Например, скажем, что я хочу увеличить масштаб до середины второй страницы.

я мог бы получить координату, в PDF позиции Canvas, как:

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

Как я мог бы перейти к позиции у?

Я пытаюсь сделать это с помощью PDFViewCtrl#setVScrollPos(), но я не знаю, как преобразовать y в допустимый параметр для этого метода.

ответ

1

Вы пытались использовать PDFViewCtrl # scrollTo (int, int)?

В первую очередь конвертировать точки из пространства PDF в пространство холста (PDFViewCtrl # convPagePtToCanvasPt), затем прокручивать по позиции.

+0

Вы можете действительно прокрутки с помощью PDFViewCtrl # scrollTo (интермедиат , int) или PDFViewCtrl # setVScrollPos (int, int). Трудная вещь, которую мне не хватало, заключается в том, что если вам нужно преобразовать позицию страницы в положение экрана, вам нужно добавить текущую позицию прокрутки в точку, в которую вы прокручиваете. – GaRRaPeTa

1

Хотя я принял ответ Ширли Г, я отправляю этот другой ответ для разъяснения.

хитрый бит, число которых для передачи в качестве параметра 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) в свитке координаты

Смежные вопросы