从 PDF 文件提取原始文本

从 PDF 文档的所有页面提取文本

从 PDF 文档中提取文本是一项常见需求。在本示例中,您将看到 Aspose.PDF for Java 如何实现从 PDF 文档的所有页面提取文本。 从所有 PDF 页面提取文本:

  1. 创建一个对象的 TextAbsorber 类。
  2. 使用打开 PDF 文档 类并调用 接受 方法的 页面 集合。
  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 文档中被突出显示的文本。为实现此功能,我们在 API 中添加了 TextMarkupAnnotation.GetMarkedText() 和 TextMarkupAnnotation.GetMarkedTextFragments() 方法。您可以通过筛选 TextMarkupAnnotation 并使用上述方法来提取 PDF 文档中的突出显示文本。以下代码片段展示了如何从 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 访问 Text Fragment 和 Segment 元素

有时在处理由 XML 生成的 PDF 文档时,需要访问 TextFragement 或 TextSegment 项。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());
    
}