2010-09-23 6 views
3

Je dois extraire le texte d'un PDF directement à l'endroit où se trouve un signet. PDFBox extrait la totalité de la page où se trouve le signet, comme expliqué here.Extrait du texte du PDF au signet

Mais j'ai besoin d'extraire le texte en commençant avec le signet.

Répondre

0

Je crois qu'iText peut gérer cela.

Rectangle2D bookmarkRect = getRectFromBookmark(someBookmarkThingy); 

FilteredTextRenderListener filter = 
    new FilteredTextRenderListener(new LocationTextExtractionStrategy(), 
            new RegionTextRenderFilter(bookmarkRect)); 

String bookmarkText = PdfTextExtractor.getTextFromPage(reader, pageNum, filter); 

someBookmarkThingy sera probablement un PdfDictionary du signet en question.

AVERTISSEMENT Les signets peuvent réellement contenir n'importe quelle action. Ils contiennent généralement l'une des nombreuses variantes de l'action GoTo *. GoTo actions peuvent spécifier un rectangle, un coin supérieur gauche & facteur de zoom, juste une page, et un certain nombre d'autres variantes. Tout ce qui définit un paramètre de zoom sera affecté par la taille de la fenêtre d'affichage du PDF dans. Cela inclut tous, sauf celui qui définit explicitement un cadre de sélection pour la nouvelle vue. Vous devrez faire une estimation éclairée sur ce qu'est une taille de fenêtre typique et faire vos conversions à partir de là.

Vous aurez probablement besoin de lire le PDF Specification, en particulier la section 12.6.4.2 «Actions à effectuer». Hmph. Ce dont vous avez vraiment besoin, ce sera la section sur les destinations, 12.3.2. destinations de page peuvent être définis ainsi:

  • [pageref/XYZ gauche zoom haut]
  • [pageref/Fit]
  • [pageref/FITH haut]
  • [pageref/FitV gauche]
  • [pageref/fitr gauche en bas à droite haut]
  • [pageref/FITB]
  • [pageref/FitBH haut]
  • [pageref/FitBV gauche]

Amusez-vous!

+0

Et n'oubliez pas que le bas d'une page ne doit pas être Y = 0. Cela pourrait être 200 ou -2000. Vous avez juste besoin de vérifier la boîte de culture de la page (et la rotation!). –