
在某些情况下,您可能需要出于各种目的从 Word 文档中提取文本。作为 Java 开发人员,您可以通过编程轻松地从 DOC 或 DOCX 文件中提取文本。在本文中,您将学习如何使用 Java 从 Word 文档中提取文本。
本文讨论/涵盖了以下主题:
- Java API 从 Word 文档中提取文本
- 使用 Java 从 Word 文档中提取文本
- 使用 Java 从 Word 文档的特定页面中提取文本
- 使用 Java 从 Word 文档中获取高亮显示
- 使用 Java 从 DOCX 中提取格式化文本
- 使用 Java 按目录提取文本
Java API 从 Word 文档中提取文本
为了从 DOC 或 DOCX 文件中提取文本,我们将使用 GroupDocs.Parser for Java API。它允许从 Word、PDF、Excel 和 PowerPoint 的流行文件格式中提取文本、元数据和图像。它还支持从支持格式的文件中提取原始、格式化和结构化文本。
您可以 下载 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 文档的特定页面中提取文本
您可以按照以下提到的简单步骤解析 Word 文档并从特定页面中提取文本:
- 首先,使用 Parser 类加载 DOCX 文件。
- 然后,使用 Parser.getFeatures().isText() 检查文档是否支持文本提取功能。阅读有关 支持的功能 的更多信息。
- 现在,调用 Parser.getDocumentInfo() 方法来获取有关文档的一般信息。如文件类型、页数、大小等。
- 获取 IDocumentInfo 接口对象中 Parser.getDocumentInfo() 方法的结果。
- 然后,检查 IDocumentInfo.getPageCount() 是否不为零。此方法返回文档页的总数。
- 遍历所有页面并为每个页面索引调用 Parser.getText() 方法以提取文本并在 TextReader 类对象中获取结果。
- 最后,通过调用TextReader.readToEnd()方法读取提取的文本来显示结果。
以下代码示例显示了如何使用 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 从 Word 文档中获取高亮显示
突出显示是文本的一部分,通常用于解释在搜索功能中找到的文本的上下文。您可以按照以下提到的简单步骤从文档中提取亮点:
- 首先,使用 Parser 类加载 DOCX 文件。
- 创建 HighlightOptions 类对象的实例,并将最大长度作为输入参数传递给其构造函数以提取固定长度的高亮。
- 然后,使用起始位置和 HighlightOptions 类对象调用 Parser.getHighlight() 方法,从文档中提取高亮作为 HighlightItem 类的对象。
- 最后调用Highlight.getPosition()和HighlightItem.getText()方法获取高亮的位置和文字。
以下代码示例展示了如何使用 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 文档并提取文本而不会丢失样式格式:
- 首先,使用 Parser 类加载 DOCX 文件。
- 定义 FormattedTextOptions 并将 FormattedTextMode 设置为 HTML。它使您能够从文档中提取 HTML 格式的文本。
- 然后,调用 Parser.getFormattedText() 方法提取格式化文本。
- 获取 TextReader 类对象中 Parser.getText() 方法的结果。
- 最后,调用 TextReader.readToEnd() 方法读取所有文本。
以下代码示例展示了如何使用 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 按目录提取文本
您可以按照以下提到的简单步骤,按目录从文档中提取文本:
- 首先,使用 Parser 类加载 DOCX 文件。
- 然后,调用 Parser.getToc() 方法将目录提取为 TocItem 类对象的集合。 TocItem 表示在目录提取功能中使用的项目。
- 现在,检查集合是否不为空。
- 然后,遍历 TocItem 的集合并调用 TocItem.extractText() 方法从 TocItem 对象引用的文档中提取文本。
- 在 TextReader 类对象中获取结果。
- 最后,调用 TextReader.readToEnd() 方法读取所有文本。
以下代码示例展示了如何使用 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 按目录提取文本
获得免费许可证
您可以通过申请 免费的临时许可证 来试用该 API,而不受评估限制。
结论
在本文中,您学习了如何使用 Java 从 Word 文档中提取文本。此外,您还了解了如何以编程方式从 DOCX 文件中提取格式化文本。本文还解释了如何通过目录提取文本并从文档中提取亮点。此外,您可以使用 documentation 了解有关 Java API 的 GroupDocs.Parser 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。