استخراج النص الخام من ملف PDF

استخراج النص من جميع صفحات مستند PDF

استخراج النص من مستند PDF هو طلب شائع. في هذا المثال، سترى كيف يتيح Aspose.PDF for Java استخراج النص من جميع صفحات مستند PDF. لاستخراج النص من جميع صفحات PDF:

  1. إنشاء كائن من TextAbsorber فئة.
  2. افتح ملف PDF باستخدام Document فئة واستدعِ قبول طريقة الـ صفحات مجموعة.
  3. ال TextAbsorber الفئة تمتص النص من المستند وتعيده في Text خاصية.

يعرض لك مقطع الشيفرة التالي كيفية استخراج النص من جميع صفحات مستند PDF.

public static void ExtractFromAllPages() {
        // The path to the documents directory.

        String filePath = _dataDir + "ExtractTextAll.pdf";

        // Open document
        Document pdfDocument = new com.aspose.pdf.Document(filePath);

        // Create TextAbsorber object to extract text
        TextAbsorber textAbsorber = new com.aspose.pdf.TextAbsorber();

        // Accept the absorber for all the pages
        pdfDocument.getPages().accept(textAbsorber);

        // Get the extracted text
        String extractedText = textAbsorber.getText();
        try {
            java.io.FileWriter writer = new java.io.FileWriter(_dataDir + "extracted-text.txt", true);
            // Write a line of text to the file
            writer.write(extractedText);
            // Close the stream
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

    }

استخراج النص المبرز من مستند PDF

في سيناريوهات مختلفة لاستخراج النص من مستند PDF، قد تحتاج إلى استخراج النص المبرز فقط من مستند PDF. لتنفيذ هذه الوظيفة، قمنا بإضافة طريقتي TextMarkupAnnotation.GetMarkedText() و TextMarkupAnnotation.GetMarkedTextFragments() في الـ API. يمكنك استخراج النص المبرز من مستند PDF عن طريق تصفية TextMarkupAnnotation واستخدام الطريقتين المذكورتين. يوضح مقطع الشيفرة التالي كيفية استخراج النص المبرز من مستند PDF.

public static void ExtractHighlightedText() {
        Document doc = new Document(_dataDir + "ExtractHighlightedText.pdf");
        // Loop through all the annotations
        for (Annotation annotation : doc.getPages().get_Item(1).getAnnotations()) {
            // Filter TextMarkupAnnotation
            if (annotation.getAnnotationType() == AnnotationType.Highlight) {
                HighlightAnnotation highlightedAnnotation = (HighlightAnnotation) annotation;
                // Retrieve highlighted text fragments
                TextFragmentCollection collection = highlightedAnnotation.getMarkedTextFragments();
                for (TextFragment tf : collection) {
                    // Display highlighted text
                    System.out.println(tf.getText());
                }
            }
        }
    }

الوصول إلى مقطع النص وعناصر الجزء من XML

في بعض الأحيان نحتاج إلى الوصول إلى عناصر TextFragement أو TextSegment عند معالجة مستندات PDF التي تم إنشاؤها من XML. يوفر Aspose.PDF for Android via Java إمكانية الوصول إلى هذه العناصر بالاسم. يوضح مقتطف الشيفرة أدناه كيفية استخدام هذه الوظيفة.

public static void AccessTextFragmentAndSegmentElements() { String inXml = \u002240014.xml\u0022; Document doc = new Document(); doc.bindXml(_dataDir \u002B inXml);

    TextSegment segment = (TextSegment) doc.getObjectById(\u0022boldHtml\u0022);
    segment = (TextSegment) doc.getObjectById("strongHtml");

    System.out.println(segment.getText());
    
}