使用 Java 从 Word 文档中提取文本

在某些情况下,您可能需要出于各种目的从 Word 文档中提取文本。作为 Java 开发人员,您可以通过编程轻松地从 DOCDOCX 文件中提取文本。在本文中,您将学习如何使用 Java 从 Word 文档中提取文本。

本文讨论/涵盖了以下主题:

Java API 从 Word 文档中提取文本

为了从 DOC 或 DOCX 文件中提取文本,我们将使用 GroupDocs.Parser for Java API。它允许从 WordPDFExcelPowerPoint 的流行文件格式中提取文本、元数据和图像。它还支持从支持格式的文件中提取原始、格式化和结构化文本。

您可以 下载 API 的 JAR 或在您的基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置来尝试下面提到的代码示例。

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>21.2</version> 
</dependency>

使用 Java 从 Word 文档中提取文本

您可以按照以下提到的简单步骤解析任何 Word 文档并提取文本:

  • 首先,使用 Parser 类加载 DOCX 文件。
  • 然后,调用 Parser.getText() 方法从加载的文档中提取文本。
  • 获取 TextReader 类对象中 Parser.getText() 方法的结果。
  • 最后,调用TextReader.readToEnd()方法读取从当前位置到文本阅读器末尾的所有字符,并将它们作为一个字符串返回。

以下代码示例展示了如何使用 Java 从 DOCX 文件中提取文本。

// 创建 Parser 类的实例
Parser parser = new Parser("C:\\Files\\sample.docx");

// 将原始文本提取到阅读器中
try (TextReader reader = parser.getText()) {
    // 打印文档中的文本
    // 如果不支持文本提取,则 reader 为 null
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
使用 Java 从 Word 文档中提取文本

使用 Java 从 Word 文档中提取文本

使用 Java 从 Word 文档的特定页面中提取文本

您可以按照以下提到的简单步骤解析 Word 文档并从特定页面中提取文本:

以下代码示例显示了如何使用 Java 逐页提取文本。

// 创建 Parser 类的实例
Parser parser = new Parser("C:\\Files\\sample.docx");

// 检查文档是否支持文本提取
if (!parser.getFeatures().isText()) {
    System.out.println("The document doesn't support text extraction.");
    return;
}

// 获取文档信息
IDocumentInfo documentInfo = parser.getDocumentInfo();

// 检查文档是否有页面
if (documentInfo.getPageCount() == 0) {
    System.out.println("The document has zero pages.");
    return;
}

// 遍历页面
for (int p = 0; p < documentInfo.getPageCount(); p++) {
    // 打印页码
    System.out.println(String.format("Page number: %d/%d", p + 1, documentInfo.getPageCount()));
    // 将文本提取到阅读器中
    try (TextReader reader = parser.getText(p)) {
        // 打印文档中的文本
        // 我们忽略了空值检查,因为我们之前已经检查过文本提取功能支持
        System.out.println(reader.readToEnd());
    }
}
使用 Java 从文档的特定页面中提取文本

使用 Java 从文档的特定页面中提取文本

使用 Java 从 Word 文档中获取高亮显示

突出显示是文本的一部分,通常用于解释在搜索功能中找到的文本的上下文。您可以按照以下提到的简单步骤从文档中提取亮点:

以下代码示例展示了如何使用 Java 从文档中提取突出显示。

// 创建 Parser 类的实例
try (Parser parser = new Parser("C:\\Files\\sample.docx")) {
    // 提取一个亮点:
    HighlightItem hl = parser.getHighlight(0, true, new HighlightOptions(8));
    // 检查是否支持高亮提取
    if (hl == null) {
        System.out.println("Highlight extraction isn't supported");
        return;
    }
    // 打印提取的高光
    System.out.println(String.format("At %d: %s", hl.getPosition(), hl.getText()));
}
At 0: Overview

使用 Java 从 DOCX 中提取格式化文本

您可以按照以下提到的简单步骤解析 Word 文档并提取文本而不会丢失样式格式:

以下代码示例展示了如何使用 Java 从 DOCX 文件中提取格式化文本。

// 创建 Parser 类的实例
try (Parser parser = new Parser("C:\\Files\\sample.docx")) {
    // 将格式化文本提取到阅读器中
    try (TextReader reader = parser.getFormattedText(new FormattedTextOptions(FormattedTextMode.Html))) {
        // 打印文档中的格式化文本
        // 如果不支持格式化文本提取,则 reader 为 null
        System.out.println(reader == null ? "Formatted text extraction isn't suppported" : reader.readToEnd());
    }
}
使用 Java 从 DOCX 中提取格式化文本

使用 Java 从 DOCX 中提取格式化文本

使用 Java 按目录提取文本

您可以按照以下提到的简单步骤,按目录从文档中提取文本:

以下代码示例展示了如何使用 Java 从 Word 文档中按目录提取文本。

// 创建 Parser 类的实例
try (Parser parser = new Parser("C:\\Files\\sampleTOC.docx")) {
    // 获取目录
    Iterable<TocItem> tocItems = parser.getToc();
    // 检查是否支持 toc 提取
    if (tocItems == null) {
        System.out.println("Table of contents extraction isn't supported");
    }
    else
    {
        // 迭代项目
        for (TocItem tocItem : tocItems) {
            // 打印章节文本
            try (TextReader reader = tocItem.extractText()) {
                System.out.println("----");
                System.out.println(reader.readToEnd());
            }
        }
    }
}
使用 Java 按目录提取文本

使用 Java 按目录提取文本

获得免费许可证

您可以通过申请 免费的临时许可证 来试用该 API,而不受评估限制。

结论

在本文中,您学习了如何使用 Java 从 Word 文档中提取文本。此外,您还了解了如何以编程方式从 DOCX 文件中提取格式化文本。本文还解释了如何通过目录提取文本并从文档中提取亮点。此外,您可以使用 documentation 了解有关 Java API 的 GroupDocs.Parser 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看