在日常开发中,将 Word 文档转换为纯文本格式是一类高频需求,常见于内容检索、文本分析、数据入库、批量文档预处理等场景。相比于直接解析 Word 二进制格式,使用成熟的文档处理库可以大幅降低开发成本。本文将介绍如何通过 Free Spire.Doc for Java 免费库,快速实现 Word(DOC/DOCX)到 TXT 的转换,并提供完整的代码示例与注意事项。
一、常见方案
Word 文档本质上是包含样式、格式、图片、表格等富内容的结构化文件,纯文本提取的核心目标是剥离格式信息,保留可读的文字内容。
实现 Word 转 TXT 通常有几条技术路径:
- 基于 Apache POI 自行解析:灵活度高,但需要处理不同版本格式差异,代码量较大
- 调用 Office 自动化接口:依赖本地 Office 环境,服务器部署成本高
- 使用第三方文档库:API 封装完善,无需依赖 Office,开发效率高
Free Spire.Doc for Java 属于第三类方案,独立运行不依赖 Microsoft Office,对 DOC 和 DOCX 格式均有良好支持,API 设计简洁,适合快速落地转换功能。
二、Maven 依赖配置
在项目 pom.xml 中添加官方仓库与免费版依赖:
xml
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc.free</artifactId>
<version>14.3.1</version>
</dependency>
三、Word 转 TXT 核心实现
转换过程极为简洁,核心就三步:加载 → 保存 → 释放资源。
java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
public class WordToTxtConverter {
public static void main(String[] args) {
// 1. 创建Document对象
Document doc = new Document();
// 2. 加载Word文档(支持.doc和.docx)
doc.loadFromFile("C:\\input\\示例文档.docx");
// 3. 保存为TXT格式
doc.saveToFile("C:\\output\\转换结果.txt", FileFormat.Txt);
// 4. 释放资源
doc.dispose();
}
}
saveToFile 方法会保留段落之间的换行,整体输出结构与原文段落顺序一致。
四、进阶用法与批量处理
批量转换
如需批量转换多个 Word 文档,可结合目录遍历:
java
import java.io.File;
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
public class BatchWordToTxt {
public static void main(String[] args) {
String inputDir = "C:\\word_files\\";
String outputDir = "C:\\txt_output\\";
File folder = new File(inputDir);
File[] files = folder.listFiles((dir, name) ->
name.endsWith(".doc") || name.endsWith(".docx"));
if (files != null) {
for (File wordFile : files) {
Document doc = new Document();
doc.loadFromFile(wordFile.getAbsolutePath());
String outputPath = outputDir +
wordFile.getName().replaceAll("\\.docx?$", ".txt");
doc.saveToFile(outputPath, FileFormat.Txt);
doc.dispose();
System.out.println("已转换: " + wordFile.getName());
}
}
}
}
提取文本而非保存为文件
如果只需要获取文本内容用于内存处理(如存入数据库),可以使用 getText() 方法:
java
Document doc = new Document();
doc.loadFromFile("示例.docx");
String textContent = doc.getText(); // 获取纯文本内容
doc.dispose();
// 后续可对textContent进行进一步处理
五、常见问题
5.1 免费版功能限制
免费版本有段落数和表格数量上限,适合个人学习、小型工具和功能验证场景。
5.2 编码问题
- 直接使用
saveToFile输出 TXT 时,默认编码为 UTF-8 - 如果目标系统使用 GBK 编码,可在写入时切换编码格式
5.3 资源释放
Document 对象会占用一定内存,使用完毕后务必调用 dispose() 方法释放资源。在批量转换场景下,建议每处理完一个文件就及时释放,避免 OOM。
5.4 非文本内容处理
TXT 本身不支持图片、表格边框、字体样式等富格式,转换后:
- 图片会被忽略,不会出现在 TXT 中
- 表格内容会按单元格顺序转为纯文本,行列结构丢失
- 超链接仅保留显示文字,不保留链接地址
如果需要保留更多格式信息,可考虑转 HTML 或 Markdown 等中间格式。
以上示例演示了如何用几行代码完成核心转换逻辑,对于不需要深度定制格式的场景,这种方案开发成本低、接入速度快,能够满足大多数文本提取类需求。
在实际项目中,建议结合文档规模、并发量和格式保留要求做综合评估:小规模批量处理用免费版即可快速落地;如果是生产环境高并发、大文档场景,则需要进一步评估性能与其他方案。