Anotasi dan teks khusus menggunakan Java
Contents
[
Hide
]
Mengekstrak teks yang disorot
Iterasi melalui anotasi halaman dan baca teks yang ditandai dari HighlightAnnotation.
- Buka PDF sumber dalam sebuah instans
Document. - Iterasikan melalui objek
AnnotationpadaPagetarget. - Periksa apakah setiap anotasi adalah
HighlightAnnotationsebelum meng-cast-nya ke kelas anotasi yang bertipe. - 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.
- Buka PDF sumber dalam sebuah instans
Document. - Iterasikan melalui objek
AnnotationpadaPagetarget. - Filter anotasi ke yang tipe‑nya adalah
Stamp. - Buat sebuah
TextAbsorberdan minta entri tampilan normal dari kamus tampilan anotasi stempel. - Kunjungi tampilan
XFormdan 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.
- Buka PDF sumber dalam sebuah instans
Document. - Buat sebuah
TextFragmentAbsorberuntuk analisis teks tingkat fragmen. - Kunjungi
Pagetarget dan kumpulkan itu objekTextFragment. - Iterasikan melalui fragmen-fragmen tersebut dan baca teks bersama dengan flag superskrip dan subskrip dari
fragment.getTextState(). - 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());
}
}