Я считаю, что iText справится с этим.
Rectangle2D bookmarkRect = getRectFromBookmark(someBookmarkThingy);
FilteredTextRenderListener filter =
new FilteredTextRenderListener( new LocationTextExtractionStrategy(),
new RegionTextRenderFilter( bookmarkRect ));
String bookmarkText = PdfTextExtractor.getTextFromPage(reader, pageNum, filter);
someBookmarkThingy
вероятно будет PdfDictionary рассматриваемой закладки.
ПРЕДУПРЕЖДЕНИЕ Закладки могут фактически содержать практически любое действие. Как правило, они содержат один из нескольких вариантов действия GoTo *.
Действия GoTo могут указывать прямоугольник, верхний левый угол и коэффициент масштабирования, просто страницу и ряд других вариантов. На все, что определяет настройку масштабирования , влияет размер окна, в котором PDF отображается в . Это включает в себя все из них, за исключением того, который явно определяет ограничивающий прямоугольник для нового представления. Вам нужно будет сделать обоснованное предположение о том, каков типичный размер окна, и выполнить ваши преобразования оттуда.
Возможно, вам понадобится прочитать Спецификацию PDF , в частности, раздел 12.6.4.2 «Действия при переходе». Хммм. Что вам действительно нужно, так это раздел о пунктах назначения, 12.3.2. Назначения страниц могут быть определены следующим образом:
- [pageRef / XYZ левый верхний зум]
- [pageRef / Fit]
- [pageRef / FitH top]
- [pageRef / FitV left]
- [pageRef / FitR слева внизу справа вверху]
- [pageRef / FitB]
- [pageRef / FitBH top]
- [pageRef / FitBV left]
Веселись!