如何使用 Java 在 Word 文档中添加和删除水印:分步指南

水印是 Word 文档中常见的辅助元素,通常用于标识文档状态、版权信息或保密等级。例如,报告在审核阶段可以添加"草稿"水印,内部文件可以添加"机密"标识,而企业模板则可能需要添加 Logo 水印。

对于单个文档,手动添加或删除水印并不复杂。但在文档自动生成、批量处理或企业文档管理系统中,频繁通过 Word 界面操作会降低效率。通过 Java 程序管理水印,可以帮助开发者在多个 Word 文件中快速应用统一的格式设置。

本文将介绍如何使用 Java 在 Word 文档中:

  • 添加文本水印;
  • 添加图片水印;
  • 删除已有水印。

为什么需要通过程序管理 Word 水印?

在实际开发中,自动化处理水印通常适用于以下场景:

  1. 文档审核流程: 在文档审核期间添加"草稿"水印,审批完成后自动移除。
  2. 机密文件管理: 为敏感文档添加"CONFIDENTIAL"或"内部使用"等标识。
  3. 自动生成报告: 在系统生成合同、报表或业务文档时统一添加水印。
  4. 批量处理文档: 一次性处理大量 Word 文件,无需逐个手动编辑。

准备工作

在开始之前,需要准备以下环境:

  • Java Development Kit (JDK): 用于开发和运行 Java 程序。
  • Spire.Doc for Java: 用于创建、读取和修改 Word 文档的 Java 库。

可以通过 Maven 将 Spire.Doc for Java 添加到 Java 项目中。

Maven 依赖配置

在项目的 ​​pom.xml​​ 文件中添加以下依赖:

xml 复制代码
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>

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

第一部分:在 Word 文档中添加文本水印

文本水印是最常见的水印类型,通常用于显示文档状态,例如"DRAFT""CONFIDENTIAL"或"APPROVED"。

第 1 步:加载 Word 文档

首先,创建 ​​Document​​ 对象,并加载需要添加水印的 Word 文件。

ini 复制代码
Document document = new Document();

document.loadFromFile("input.docx");

​loadFromFile()​​ 方法会将 Word 文档加载到内存中,之后可以对文档进行修改。

第 2 步:创建文本水印

使用 ​​TextWatermark​​ 创建文本水印,并设置水印内容、字体和颜色。

java 复制代码
import java.awt.*;

TextWatermark watermark = new TextWatermark(
        "CONFIDENTIAL",
        new Font("Arial", Font.PLAIN, 45),
        Color.GRAY
);

其中:

  • 第一个参数表示水印文本内容;
  • 第二个参数用于设置字体和字号;
  • 第三个参数用于设置水印颜色。

可以根据实际需求替换水印文字,例如:

arduino 复制代码
DRAFT
INTERNAL USE ONLY
APPROVED

第 3 步:配置文本水印布局

可以通过 ​​WatermarkLayout​​ 设置水印显示方向。

例如,设置为斜向显示:

ini 复制代码
watermark.setLayout(WatermarkLayout.Diagonal);

斜向水印适合用于文档状态标识,因为它醒目但不会完全遮挡正文。

如果需要水平显示:

ini 复制代码
watermark.setLayout(WatermarkLayout.Horizontal);

第 4 步:应用并保存文本水印

完成水印配置后,将其应用到文档并保存。

javascript 复制代码
document.setWatermark(watermark);

document.saveToFile(
        "text-watermarked.docx",
        FileFormat.Docx
);

添加文本水印完整示例

typescript 复制代码
import com.spire.doc.*;
import com.spire.doc.documents.*;
import java.awt.*;

public class AddTextWatermark {

    public static void main(String[] args) {

        Document document = new Document();

        // 加载 Word 文档
        document.loadFromFile("input.docx");

        // 创建文本水印
        TextWatermark watermark = new TextWatermark(
                "CONFIDENTIAL",
                new Font("Arial", Font.PLAIN, 45),
                Color.GRAY
        );

        // 设置水印方向
        watermark.setLayout(WatermarkLayout.Diagonal);

        // 添加水印
        document.setWatermark(watermark);

        // 保存文档
        document.saveToFile(
                "text-watermarked.docx",
                FileFormat.Docx
        );

        document.dispose();

        System.out.println("Text watermark added successfully!");
    }
}

第二部分:在 Word 文档中添加图片水印

除了文本水印外,Word 文档中也经常需要添加图片水印,例如企业 Logo、品牌图标或版权标识。

图片水印适用于需要展示视觉标识的场景,例如企业模板或正式发布文件。

第 1 步:加载 Word 文档

首先加载需要添加图片水印的 Word 文件:

ini 复制代码
Document document = new Document();

document.loadFromFile("input.docx");

第 2 步:创建图片水印

使用 ​​PictureWatermark​​ 创建图片水印。

ini 复制代码
PictureWatermark watermark = new PictureWatermark();

watermark.setPicture(
        "logo.png"
);

其中,​​logo.png​​ 是需要添加到文档中的图片文件。

第 3 步:调整图片水印效果

可以根据文档需求调整图片水印效果。

例如,降低图片颜色强度:

arduino 复制代码
watermark.setWashout(true);

设置图片缩放比例:

ini 复制代码
watermark.setScaling(100);

这样可以让图片更适合作为页面背景显示。

第 4 步:应用并保存图片水印

完成设置后,将图片水印应用到文档:

javascript 复制代码
document.setWatermark(watermark);

document.saveToFile(
        "image-watermarked.docx",
        FileFormat.Docx
);

添加图片水印完整示例

typescript 复制代码
import com.spire.doc.*;

public class AddImageWatermark {

    public static void main(String[] args) {

        Document document = new Document();

        // 加载 Word 文档
        document.loadFromFile("input.docx");

        // 创建图片水印
        PictureWatermark watermark = new PictureWatermark();

        watermark.setPicture("logo.png");

        // 设置水印效果
        watermark.setWashout(true);
        watermark.setScaling(100);

        // 添加图片水印
        document.setWatermark(watermark);

        // 保存文档
        document.saveToFile(
                "image-watermarked.docx",
                FileFormat.Docx
        );

        document.dispose();

        System.out.println("Image watermark added successfully!");
    }
}

第三部分:删除 Word 文档中的水印

当文档审核完成或者需要正式发布时,通常需要移除之前添加的水印。

第 1 步:加载包含水印的文档

首先加载已经添加水印的 Word 文件:

ini 复制代码
Document document = new Document();

document.loadFromFile("watermarked.docx");

第 2 步:删除水印

使用 ​​removeWatermark()​​ 方法删除已有水印:

ini 复制代码
document.removeWatermark();

该方法可以移除通过 ​​setWatermark()​​ 添加到文档中的水印。

第 3 步:保存删除水印后的文档

最后保存处理后的文件:

javascript 复制代码
document.saveToFile(
        "without-watermark.docx",
        FileFormat.Docx
);

删除水印完整示例

typescript 复制代码
import com.spire.doc.*;

public class RemoveWatermark {

    public static void main(String[] args) {

        Document document = new Document();

        // 加载包含水印的文档
        document.loadFromFile("watermarked.docx");

        // 删除水印
        document.removeWatermark();

        // 保存文档
        document.saveToFile(
                "without-watermark.docx",
                FileFormat.Docx
        );

        document.dispose();

        System.out.println("Watermark removed successfully!");
    }
}

运行程序

编译并运行上述 Java 程序:

  • 文本水印示例会生成带有文字标识的 Word 文档;
  • 图片水印示例会生成带有 Logo 或图片背景的 Word 文档;
  • 删除水印示例会移除已有水印并生成新的文档。

可以使用 Microsoft Word 打开生成的 ​​.docx​​ 文件查看效果。

其他注意事项

  • 合理设置水印效果: 建议使用较浅的颜色和合适的字号,避免水印影响正文阅读。
  • 保留原始文档: 添加或删除水印会修改文档内容,处理重要文件时建议提前备份。
  • 批量处理文件: 如果需要处理多个 Word 文档,可以将加载、修改和保存逻辑放入循环,实现自动化处理。
  • 测试复杂文档: 对包含多个节、图片或复杂格式的 Word 文件,建议在批量处理前进行测试。

总结

水印在 Word 文档管理中有着广泛应用,可以用于标识文档状态、保护敏感信息以及统一企业文档格式。

对于简单场景,手动添加水印即可满足需求;但在文档生成、批量处理和企业应用中,通过代码自动管理水印更加高效。

使用 Spire.Doc for Java,开发者可以在 Word 文档中添加文本水印、图片水印,并根据需要删除已有水印。这种方式适用于报告生成系统、文档管理平台以及各种自动化办公场景。

相关推荐
王中阳Go2 小时前
老板用AI三天写到90%,让我明天上线:Java 团队怎么接这10%的烂摊子?
java
gugucoding2 小时前
55. 【Java】Maven:项目构建的“管家”
java·maven
郑州光合科技余经理3 小时前
海外版多语言团购系统架构:主数据互通与核销边界
java·开发语言·前端·后端·系统架构·php·ai编程
Jesse_EC4 小时前
为什么我设置的 contentLength 到了消费端变成了 0?
java
vipxieliang4 小时前
ValidX 的 Date 和 DateTime vs JPA 的 Temporal 对比
java·后端
杜touch4 小时前
Spring框架的AnnotationConfigApplicationContext类启动的流程
java
AI人工智能+电脑小能手5 小时前
大白话说Java设计模式-26-策略模式(业务实战篇)
java·spring·设计模式·策略模式·支付系统·算法切换
不是光头 强5 小时前
Java 后端 AI 技术选型与学习路线
java·人工智能·学习