Anotasi dan teks khusus menggunakan Java

Mengekstrak teks yang disorot

Iterasi melalui anotasi halaman dan baca teks yang ditandai dari HighlightAnnotation.

  1. Buka PDF sumber dalam sebuah instans Document.
  2. Iterasikan melalui objek Annotation pada Page target.
  3. Periksa apakah setiap anotasi adalah HighlightAnnotation sebelum meng-cast-nya ke kelas anotasi yang bertipe.
  4. Baca teks yang ditandai dari setiap anotasi sorotan dan cetak ke konsol.
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());
            }
        }
    }
}

Mengekstrak teks dari anotasi stempel

Baca aliran tampilan normal dari anotasi stamp dan teruskan TextAbsorber.

  1. Buka PDF sumber dalam sebuah instans Document.
  2. Iterasikan melalui objek Annotation pada Page target.
  3. Filter anotasi ke yang tipe‑nya adalah Stamp.
  4. Buat sebuah TextAbsorber dan minta entri tampilan normal dari kamus tampilan anotasi stempel.
  5. Kunjungi tampilan XForm dan cetak teks yang diekstrak.
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());
                }
            }
        }
    }
}

Mengekstrak detail teks superskrip dan subskrip

Gunakan TextFragmentAbsorber ketika Anda membutuhkan teks yang diekstrak serta tanda superskrip atau subskrip pada setiap fragmen.

  1. Buka PDF sumber dalam sebuah instans Document.
  2. Buat sebuah TextFragmentAbsorber untuk analisis teks tingkat fragmen.
  3. Kunjungi Page target dan kumpulkan itu objek TextFragment.
  4. Iterasikan melalui fragmen-fragmen tersebut dan baca teks bersama dengan flag superskrip dan subskrip dari fragment.getTextState().
  5. Tuliskan detail yang diekstrak ke file output.
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());
    }
}