从书签中提取PDF文本

3
我需要从PDF中提取文本,就在书签所在的位置。
PDFBox会提取书签所在的整个页面,如此处所述。
但我需要从书签开始提取文本。
1个回答

0

我相信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 节。页面目标可以这样定义:

  • [pageRef /XYZ 左 上 缩放]
  • [pageRef /Fit]
  • [pageRef /FitH 上]
  • [pageRef /FitV 左]
  • [pageRef /FitR 左 下 右 上]
  • [pageRef /FitB]
  • [pageRef /FitBH 上]
  • [pageRef /FitBV 左]

玩得愉快!


不要忘记页面底部不一定是Y=0。它可以是200或-2000。您只需要检查页面的裁剪框(和旋转!)。 - Mark Storer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接