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

 更新时间:2026年03月30日 11:20:44   作者:缺点内向  
在日常的文档处理工作中,Word 文档的属性扮演着重要角色,本文将介绍如何使用 Spire.Doc for Java 这一开源组件,以编程方式读取和删除 Word 文档中的内置属性与自定义属性,感兴趣的小伙伴可以了解下

在日常的文档处理工作中,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 文档属性的读取与删除操作。这一能力不仅简化了文档管理流程,也为隐私保护提供了编程层面的支持。无论是单独使用,还是集成到企业级文档处理系统中,该方案都表现出良好的稳定性与可扩展性。

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

到此这篇关于Java使用Spire.Doc实现读取或删除Word文档属性的文章就介绍到这了,更多相关Java读取或删除Word文档属性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java枚举类的规范设计与常见错误规避指南

    Java枚举类的规范设计与常见错误规避指南

    在Java开发中,枚举(enum)是一种强大的工具,用于定义一组固定常量集合,然而,许多开发者在使用枚举时容易陷入设计误区,导致代码可维护性差、运行时错误频发,甚至引发生产事故,所以本文给大家介绍了Java枚举类的规范设计与常见错误规避,需要的朋友可以参考下
    2025-06-06
  • spring cloud gateway如何获取请求的真实地址

    spring cloud gateway如何获取请求的真实地址

    这篇文章主要介绍了spring cloud gateway如何获取请求的真实地址问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • IDEA中切换不同版本的JDK的详细教程(超管用)

    IDEA中切换不同版本的JDK的详细教程(超管用)

    这篇文章主要介绍了IDEA中切换不同版本的JDK的详细教程(超管用),本文通过步骤详解给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 基于Java Springboot + Vue + MyBatis实现音乐播放系统

    基于Java Springboot + Vue + MyBatis实现音乐播放系统

    这篇文章主要介绍了一个完整的音乐播放系统是基于Java Springboot + Vue + MyBatis编写的,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • MyBatis-Plus雪花算法实现源码解读

    MyBatis-Plus雪花算法实现源码解读

    雪花算法是一种用于生成唯一标识符(ID)的分布式算法,雪花算法的设计目标是在分布式系统中生成全局唯一的ID,同时保证ID的有序性和趋势递增,这篇文章主要介绍了MyBatis-Plus雪花算法实现源码解析,需要的朋友可以参考下
    2023-12-12
  • java读取文件内容,解析Json格式数据方式

    java读取文件内容,解析Json格式数据方式

    这篇文章主要介绍了java读取文件内容,解析Json格式数据方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 图文教程教你IDEA中的Spring环境搭建+简单入门

    图文教程教你IDEA中的Spring环境搭建+简单入门

    这篇文章主要介绍了图文教程教你IDEA中的Spring环境搭建+简单入门,Spring的环境搭建使用Maven更加方便,需要的朋友可以参考下
    2023-03-03
  • 在springboot中对kafka进行读写的示例代码

    在springboot中对kafka进行读写的示例代码

    本篇文章主要介绍了在springboot中对kafka进行读写的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Shiro+SpringBoot时,anon配置的匿名路径被拦截,自定义配置类走过的坑及解决

    Shiro+SpringBoot时,anon配置的匿名路径被拦截,自定义配置类走过的坑及解决

    文章主要讲述了在Java配置类中使用`@Configuration`注解的重要性,并通过修改Shiro配置时遇到的问题,强调了使用`LinkedHashMap`而不是`HashMap`的原因,同时,文章还提供了一些面试题和总结,帮助读者更好地理解和应用这些知识
    2026-03-03
  • Java实现简单日历小程序 Java图形界面小日历开发

    Java实现简单日历小程序 Java图形界面小日历开发

    这篇文章主要介绍了Java实现简单日历小程序,如何用Java swing开发一款简单的小日历,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02

最新评论