我相信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 节“Go-To 操作”。嗯。您真正需要的将是目标部分,即 12.3.2 节。页面目标可以这样定义:
玩得愉快!