从PDF文件提取原始文本

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

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

  1. 创建一个TextAbsorber类的对象。

  2. 使用 Document 类打开 PDF,并调用 Pages 集合的 Accept 方法。

  3. TextAbsorber 类从文档中吸收文本并返回到 Text 属性中。

以下代码片段向您展示如何从 PDF 文档的所有页面中提取文本。

public static void ExtractFromAllPages() {
        // 文档目录的路径。

        String filePath = _dataDir + "ExtractTextAll.pdf";

        // 打开文档
        Document pdfDocument = new com.aspose.pdf.Document(filePath);

        // 创建 TextAbsorber 对象以提取文本
        TextAbsorber textAbsorber = new com.aspose.pdf.TextAbsorber();

        // 接受所有页面的吸收器
        pdfDocument.getPages().accept(textAbsorber);

        // 获取提取的文本
        String extractedText = textAbsorber.getText();
        try {
            java.io.FileWriter writer = new java.io.FileWriter(_dataDir + "extracted-text.txt", true);
            // 将一行文本写入文件
            writer.write(extractedText);
            // 关闭流
            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");
        // 遍历所有注释
        for (Annotation annotation : doc.getPages().get_Item(1).getAnnotations()) {
            // 过滤 TextMarkupAnnotation
            if (annotation.getAnnotationType() == AnnotationType.Highlight) {
                HighlightAnnotation highlightedAnnotation = (HighlightAnnotation) annotation;
                // 检索高亮文本片段
                TextFragmentCollection collection = highlightedAnnotation.getMarkedTextFragments();
                for (TextFragment tf : collection) {
                    // 显示高亮文本
                    System.out.println(tf.getText());
                }
            }
        }
    }

访问 XML 中的文本片段和段元素

有时我们需要在处理从 XML 生成的 PDF 文档时访问 TextFragement 或 TextSegment 项。Aspose.PDF for Android via Java 提供了按名称访问这些项目的功能。下面的代码片段展示了如何使用此功能。

public static void AccessTextFragmentAndSegmentElements() {
    String inXml = "40014.xml";
    Document doc = new Document();
    doc.bindXml(_dataDir + inXml);

    TextSegment segment = (TextSegment) doc.getObjectById("boldHtml");
    segment = (TextSegment) doc.getObjectById("strongHtml");

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