Annotations et textes spéciaux utilisant Java
Extraire le texte surligné
Parcourez les annotations de page et lisez le texte marqué à partir de HighlightAnnotation.
-
Ouvrez le PDF source dans une instance
Document. -
Parcourez les objets
Annotationsur laPagecible. -
Vérifiez si chaque annotation est une
HighlightAnnotationavant de la convertir vers ce type. -
Lisez le texte marqué de chaque annotation de surlignage et affichez-le dans la console.
public static void extractHighlightedText(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation instanceof HighlightAnnotation) {
HighlightAnnotation highlightAnnotation = (HighlightAnnotation) annotation;
System.out.println(highlightAnnotation.getMarkedText());
}
}
}
}
Extraire le texte des annotations de tampon
Lisez le flux d’apparence normale à partir d’une annotation de tampon et transmettez-le via TextAbsorber.
-
Ouvrez le PDF source dans une instance
Document. -
Parcourez les objets
Annotationsur laPagecible. -
Conservez uniquement les annotations dont le type est
Stamp. -
Créez un
TextAbsorberet récupérez l’entrée d’apparence normale dans le dictionnaire d’apparence de l’annotation de tampon. -
Visitez l’apparence
XFormet affichez le texte extrait.
public static void extractStampText(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Stamp) {
TextAbsorber absorber = new TextAbsorber();
Object[] xforms = new Object[1];
if (annotation.getAppearance().tryGetValue("N", xforms) && xforms[0] instanceof XForm) {
absorber.visit((XForm) xforms[0]);
System.out.println(absorber.getText());
}
}
}
}
}
Extraire les détails du texte en exposant et en indice
Utilisez TextFragmentAbsorber lorsque vous avez besoin à la fois du texte extrait et des indicateurs en exposant ou en indice sur chaque fragment.
-
Ouvrez le PDF source dans une instance
Document. -
Créez un
TextFragmentAbsorberpour l’analyse de texte au niveau des fragments. -
Visitez la
Pagecible et récupérez ses objetsTextFragment. -
Parcourez ces fragments et lisez le texte avec les indicateurs de mise en exposant et en indice de
fragment.getTextState(). -
Écrivez les détails extraits dans le fichier de sortie.
public static void extractSuperSubDetails(Path inputFile, Path outputFile, int pageNumber) throws Exception {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber absorber = new TextFragmentAbsorber();
document.getPages().get_Item(pageNumber).accept(absorber);
StringBuilder details = new StringBuilder();
for (TextFragment fragment : absorber.getTextFragments()) {
details.append("Text: '").append(fragment.getText())
.append("' | Superscript: ").append(fragment.getTextState().isSuperscript())
.append(" | Subscript: ").append(fragment.getTextState().isSubscript())
.append(System.lineSeparator());
}
Files.writeString(outputFile, details.toString());
}
}