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!
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!). –