Java: 使用 Spire.Doc 读取或删除 Word 文档属性

8 阅读3分钟

在日常的文档处理工作中,Word 文档的属性(也称为元数据)扮演着重要角色。这些信息包括标题、作者、公司、关键词等,虽然不直接显示在正文中,却能帮助我们快速识别文档来源、分类检索,或判断文档用途。然而,在某些场景下(如对外分享文档),我们可能需要移除这些属性以保护隐私。

本文将介绍如何使用 Spire.Doc for Java 这一开源组件,以编程方式读取和删除 Word 文档中的内置属性与自定义属性。整个操作无需安装 Microsoft Office,适合在服务器端或自动化流程中集成。

一、准备工作:引入 Spire.Doc for Java

在开始编码前,需要将 Spire.Doc for Java 引入项目中。该库提供了简洁的 API 来操作 Word 文档结构。

方式一:通过 Maven 安装

pom.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>

<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>14.3.1</version>
    </dependency>
</dependencies>

方式二:手动导入 JAR 包

若未使用 Maven,可从官方渠道下载 Spire.Doc.jar 文件,并将其添加至项目的构建路径中 。

二、读取 Word 文档属性

Spire.Doc 将文档属性分为两类:

  • 内置属性:如标题、主题、作者、公司、类别、关键词、备注等,由 Word 预定义。
  • 自定义属性:用户自行定义的属性,支持文本、日期、数字等类型。

以下示例展示如何读取这两类属性:

import com.spire.doc.*;

public class ReadDocumentProperties {
    public static void main(String[] args) {
        // 加载 Word 文档
        Document doc = new Document("Sample.docx");

        // 获取内置属性
        BuiltinDocumentProperties builtin = doc.getBuiltinDocumentProperties();
        System.out.println("标题: " + builtin.getTitle());
        System.out.println("主题: " + builtin.getSubject());
        System.out.println("作者: " + builtin.getAuthor());
        System.out.println("公司: " + builtin.getCompany());
        System.out.println("关键词: " + builtin.getKeywords());

        // 获取自定义属性
        CustomDocumentProperties custom = doc.getCustomDocumentProperties();
        for (int i = 0; i < custom.getCount(); i++) {
            DocumentProperty prop = custom.get(i);
            System.out.println(prop.getName() + ": " + prop.getValue());
        }
    }
}

上述代码通过 Document.getBuiltinDocumentProperties()getCustomDocumentProperties() 获取属性集合,随后逐一读取其值 。

三、删除 Word 文档属性

删除属性的逻辑与读取类似,但操作方式略有不同:

  • 内置属性:无法直接删除,但可通过将其值设置为空字符串来“清空”。
  • 自定义属性:可直接通过 remove() 方法按名称或索引删除。
import com.spire.doc.*;

public class RemoveDocumentProperties {
    public static void main(String[] args) {
        // 加载 Word 文档
        Document doc = new Document("Sample.docx");

        // 清空内置属性(设为空字符串)
        BuiltinDocumentProperties builtin = doc.getBuiltinDocumentProperties();
        builtin.setTitle("");
        builtin.setSubject("");
        builtin.setAuthor("");
        builtin.setCompany("");
        builtin.setKeywords("");
        builtin.setComments("");

        // 删除自定义属性
        CustomDocumentProperties custom = doc.getCustomDocumentProperties();
        // 方式一:按名称删除
        custom.remove("审核人");
        // 方式二:遍历删除所有
        for (int i = custom.getCount(); i > 0; i--) {
            String name = custom.get(i - 1).getName();
            custom.remove(name);
        }

        // 保存处理后的文档
        doc.saveToFile("Result.docx", FileFormat.Docx);
        doc.dispose();
    }
}

需要注意的是,遍历删除自定义属性时建议倒序删除,避免因索引变化导致遗漏 。

四、应用场景与注意事项

适用场景

  • 文档归档:在入库前统一清理作者、公司等敏感信息。
  • 对外发布:移除文档属性,防止内部信息泄露。
  • 自动化处理:结合批处理流程,批量清理或读取文档元数据。

注意事项

  • 若文档受密码保护,需先解除保护再操作属性。
  • Free Spire.Doc 版本存在页数限制(通常为 10 页),处理大型文档时建议使用商业版或申请临时授权 。
  • 删除操作不可逆,建议在处理前备份原始文件。

五、结语

通过 Spire.Doc for Java,我们可以轻松实现对 Word 文档属性的读取与删除操作。这一能力不仅简化了文档管理流程,也为隐私保护提供了编程层面的支持。无论是单独使用,还是集成到企业级文档处理系统中,该方案都表现出良好的稳定性与可扩展性。

实际开发中,你可以根据业务需要,灵活组合读取、删除、修改等操作,构建更智能的文档处理应用。