التعليقات التوضيحية والنص الخاص باستخدام Java

استخراج النص المظلل

التكرار عبر ملاحظات الصفحة وقراءة النص المميز من HighlightAnnotation.

  1. افتح ملف PDF المصدر في مثيل Document.
  2. مرّ على الـ الكائنات Annotation على الهدف Page.
  3. تحقّق مما إذا كان كل توضيح هو HighlightAnnotation قبل تحويله إلى فئة التوضيح ذات النوع المحدد.
  4. اقرأ النص المحدد من كل توضيح تظليل واطبعه على وحدة التحكم.
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.

  1. افتح ملف PDF المصدر في مثيل Document.
  2. مرّ على الـ الكائنات Annotation على الهدف Page.
  3. صفِّ التعليقات التوضيحية إلى تلك التي يكون نوعها Stamp.
  4. أنشئ كائنًا من الفئة TextAbsorber وطلب إدخال المظهر العادي من قاموس مظهر التعليق التوضيحي للستامب.
  5. زُر المظهر 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 عند الحاجة إلى كل من النص المستخرج وعلامات الفوقية أو السفلية لكل جزء.

  1. افتح ملف PDF المصدر في مثيل Document.
  2. أنشئ كائنًا من الفئة TextFragmentAbsorber لتحليل النص على مستوى الجزء.
  3. زُر الهدف Page واجمعها الكائنات TextFragment.
  4. مرّ على تلك الأجزاء واقرأ النص مع علامات العلوي والسفلي من fragment.getTextState().
  5. اكتب التفاصيل المستخرجة إلى ملف الإخراج.
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());
    }
}