التعليقات التوضيحية والنص الخاص باستخدام Java
Contents
[
Hide
]
استخراج النص المظلل
التكرار عبر ملاحظات الصفحة وقراءة النص المميز من HighlightAnnotation.
- افتح ملف PDF المصدر في مثيل Document.
- مرّ على الـ الكائنات Annotation على الهدف Page.
- تحقّق مما إذا كان كل توضيح هو HighlightAnnotation قبل تحويله إلى فئة التوضيح ذات النوع المحدد.
- اقرأ النص المحدد من كل توضيح تظليل واطبعه على وحدة التحكم.
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());
}
}
}
}
استخراج النص من تعليقات الطوابع
قراءة تدفق المظهر العادي من توضيح الختم وتمريره TextAbsorber.
- افتح ملف PDF المصدر في مثيل Document.
- مرّ على الـ الكائنات Annotation على الهدف Page.
- صفِّ التعليقات التوضيحية إلى تلك التي يكون نوعها
Stamp. - أنشئ كائنًا من الفئة TextAbsorber وطلب إدخال المظهر العادي من قاموس مظهر التعليق التوضيحي للستامب.
- زُر المظهر XForm واطبع النص المستخرج.
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());
}
}
}
}
}
استخراج تفاصيل النص العلوي والنص السفلي
استخدام TextFragmentAbsorber عند الحاجة إلى كل من النص المستخرج وعلامات الفوقية أو السفلية لكل جزء.
- افتح ملف PDF المصدر في مثيل Document.
- أنشئ كائنًا من الفئة TextFragmentAbsorber لتحليل النص على مستوى الجزء.
- زُر الهدف Page واجمعها الكائنات TextFragment.
- مرّ على تلك الأجزاء واقرأ النص مع علامات العلوي والسفلي من
fragment.getTextState(). - اكتب التفاصيل المستخرجة إلى ملف الإخراج.
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());
}
}