我需要在书签所在的位置从PDF中提取文本。

PDFBox提取书签所在的整个页面,如here所述。

但是我需要从书签开始提取文本。

最佳答案

我相信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 Specification,尤其是第12.6.4.2节“ Go-To Actions”。 mph您真正需要的是“目标”部分12.3.2。页面目标可以这样定义:


[pageRef / XYZ左上角缩放]
[pageRef / Fit]
[pageRef / FitH置顶]
[pageRef / FitV左]
[pageRef / FitR左下右上]
[pageRef / FitB]
[pageRef / FitBH顶部]
[pageRef / FitBV左]


玩得开心!

08-18 17:19