Извлечение сырого текста из PDF‑файла

Извлечение текста со всех страниц PDF‑документа

Извлечение текста из PDF‑документа является распространённой задачей. В этом примере вы увидите, как Aspose.PDF for Java позволяет извлекать текст со всех страниц PDF‑документа. Для извлечения текста со всех страниц PDF:

  1. Создайте объект TextAbsorber класс.
  2. Откройте PDF, используя Document класс и вызовите Accept метод Pages коллекция.
  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 Document

В различных сценариях извлечения текста из 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());
                }
            }
        }
    }

Получить доступ к элементам Text Fragment и Segment из 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());
    
}