2010-09-23 124 views
3

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

PDFBox提取书签所在的整个页面,如解释here

但我需要提取文本与书签开始

回答

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 Specification,特别是第12.6.4.2节“转至操作”。哼。你真正需要的是关于目的地的部分,12.3.2。页面目的地可以正是如此定义:

  • [PAGEREF/XYZ左顶部变焦]
  • [PAGEREF /适合]
  • [PAGEREF/FITH顶部]
  • [PAGEREF/FITV左]
  • [PAGEREF/FITR左右下角顶部]
  • [PAGEREF/FITB]
  • [PAGEREF/FitBH顶部]
  • [PAGEREF/FitBV左]

玩得开心!

+0

并且不要忘记页面底部不一定是Y = 0。它可能是200或-2000。你只需要检查页面的裁剪框(和旋转!)。 – 2011-03-24 00:04:30