Извлечь текст из PDF в закладки - PullRequest
3 голосов
/ 23 сентября 2010

Мне нужно извлечь текст из PDF прямо в том месте, где находится закладка.

PDFBox извлекает всю страницу, где находится закладка, как объяснено здесь .

Но мне нужно извлечь текст , начиная с с закладкой.

1 Ответ

0 голосов
/ 24 марта 2011

Я считаю, что 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]

Веселись!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...