Word中可以为文档添加的水印分为两种形式:文字水印和图片水印。水印是一种数字保护的手段,在文档上添加水印可以传达有用信息,或者在不影响正文文字显示效果的同时,为打印文档增添视觉趣味,能起到传递信息,宣传推广的作用。此外,它还能起到提示文档性质以及进行相关说明的作用。那么我们如何给Word文档添加水印呢?本文将通过Java代码,以编程的方式给Word文档添加水印。以下是具体步骤及方法,并附上Java代码供大家参考,希望这篇文章能对大家有所裨益。

  • 给Word文档添加多行文字水印
  • 给Word文档添加文字水印
  • 给Word文档添加图片水印

程序环境:

方法1:手动引入。将 Free Spire.Doc for Java 下载到本地,解压,找到lib文件夹下的Spire.Doc.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序

方法2: 如果您想通过 Maven安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。

<repositories>

        <repository>

            <id>com.e-iceblue</id>

            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>

        </repository>

    </repositories>

<dependencies>

    <dependency>

        <groupId>e-iceblue</groupId>

        <artifactId>spire.doc.free</artifactId>

        <version>5.2.0</version>

    </dependency>

</dependencies>

给Word文档添加多行文字水印

  • 创建一个 Document 实例。

  • 使用 Document.loadFromFile() 方法加载示例 Word 文档。

  • 创建 ShapeObject 类的实例,并通过 ShapeObject.setWidth()、ShapeObject.setHeight()、ShapeObject. setVerticalPosition()、ShapeObject.setHorizontalPosition( )、ShapeObject.setRotation()、ShapeObject.getWordArt.setText()、ShapeObject.getWordArt.setFontFamily()、ShapeObject.setFillColor() 等方法设置形状大小、位置、旋转角度、水印文字、字体及颜色等。
  • for 循环遍历所有 Section,通过 section.getHeadersFooters().getHeader() 方法获取页眉,如果页眉有段落,取它第一个段落,并以 HeaderFooter.AddParagraph() 方法添加段落到页眉。
  • 通过 for 循环以 ShapeObject. deepClone() 方法多次复制艺术字,并通过 ShapeObject.setVerticalPosition()  和 ShapeObject.setHorizontalPosition() 方法设置形状位置排列。
  • 使用 Document.saveToFile() 方法保存文件。

完整代码

Java

import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.ShapeObject; import java.awt.*; public class WordWatermark {
public static void main(String[] args) {
//加载示例文档
Document doc = new Document();
doc.loadFromFile("AI创意赛.docx");
//添加艺术字并设置大小
ShapeObject shape = new ShapeObject(doc, ShapeType.Text_Plain_Text);
shape.setWidth(60);
shape.setHeight(20);
//设置艺术字文本内容、位置及样式
shape.setVerticalPosition(30);
shape.setHorizontalPosition(20);
shape.setRotation(315);
shape.getWordArt().setFontFamily("黑体");
shape.getWordArt().setText("内部使用");
shape.setFillColor(Color.RED);
shape.setLineStyle(ShapeLineStyle.Single);
shape.setStrokeColor(new Color(192, 192, 192, 255));
shape.setStrokeWeight(1); Section section;
HeaderFooter header;
for (int n = 0; n < doc.getSections().getCount(); n++) {
section = doc.getSections().get(n);
//获取section的页眉
header = section.getHeadersFooters().getHeader();
Paragraph paragraph; if (header.getParagraphs().getCount() > 0) {
//如果页眉有段落,取它第一个段落
paragraph = header.getParagraphs().get(0);
} else {
//否则新增加一个段落到页眉
paragraph = header.addParagraph();
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
//复制艺术字并设置多行多列位置
shape = (ShapeObject) shape.deepClone();
shape.setVerticalPosition(50 + 150 * i);
shape.setHorizontalPosition(20 + 160 * j);
paragraph.getChildObjects().add(shape);
}
}
}
//保存文档
doc.saveToFile("添加多行文字水印.docx", FileFormat.Docx_2013);
}
}

给Word文档添加文字水印

  • 创建一个 Document 实例。

  • 使用 Document.loadFromFile() 方法加载示例 Word 文档。

  • 使用 Document.getSections().get() 方法获取第一节。

  • 创建一个 TextWatermark 实例。

  • 使用 TextWatermark 类提供的方法设置文本水印的文本、字体大小、颜色和布局。

  • 使用 Section.getDocument().setWatermark() 方法将文本水印添加到示例文档。

  • 使用 Document.saveToFile() 方法保存文件。

Java代码

import com.spire.doc.*;
import com.spire.doc.documents.WatermarkLayout;
import java.awt.*; public class WordTextWatermark {
public static void main(String[] args) {
//创建一个Document实例
Document document = new Document(); //加载示例 Word 文档
document.loadFromFile("AI创意赛.docx"); //获取第一节
Section section = document.getSections().get(0); //创建一个 TextWatermark 实例
TextWatermark txtWatermark = new TextWatermark(); //设置文本水印格式
txtWatermark.setText("机密文件");
txtWatermark.setFontSize(40);
txtWatermark.setColor(Color.red);
txtWatermark.setLayout(WatermarkLayout.Diagonal); //将文本水印添加到示例文档
section.getDocument().setWatermark(txtWatermark); //保存文件
document.saveToFile("添加文本水印.docx", FileFormat.Docx);
}
}

给Word文档添加图片水印

  • 创建一个 Document 实例。

  • 使用 Document.loadFromFile() 方法加载示例 Word 文档。

  • 创建一个 PictureWatermark 实例。

  • 使用 PictureWatermark.setPicture() 方法加载图像作为图像水印,然后使用 PictureWatermark.setScaling() 方法和 PictureWatermark.isWashout() 方法设置图像水印的缩放和冲洗属性。

  • 使用 Document.setWatermark() 方法将图像水印添加到示例文档中。

  • 使用 Document.saveToFile() 方法保存文件。

Java代码

import com.spire.doc.*;

public class WordImageWatermark {
public static void main(String[] args) throws Exception{
//创建一个Document实例
Document document = new Document(); //加载示例 Word 文档
document.loadFromFile("AI创意赛.docx"); //创建一个 PictureWatermark 实例
PictureWatermark picture = new PictureWatermark(); //设置图像水印格式
picture.setPicture("印章.png");
picture.setScaling(100);
picture.isWashout(false); //将图像水印添加到示例文档中
document.setWatermark(picture); //保存文件
document.saveToFile("添加图像水印.docx",FileFormat.Docx );
}
}

—谢谢您的观看—

如何通过Java代码给Word文档添加水印?的更多相关文章

  1. 如何通过 Java 代码隐藏 Word 文档中的指定段落

    在编辑Word文档时,我们有时需要将一些重要信息保密. 因此,可以隐藏它们以确保机密性. 在本文中,将向您介绍如何通过 Java 程序中的代码隐藏 Word 文档中的特定段落.下面是我整理的具体步骤, ...

  2. [转载]Java动态生成word文档(图文并茂)

    很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...

  3. [原创]Java动态生成word文档(图文并茂)

    很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...

  4. Java 后台创建word 文档

    ---恢复内容开始--- Java 后台创建 word 文档 自己总结  网上查阅的文档 分享POI 教程地址:http://www.tuicool.com/articles/emqaEf6 方式一. ...

  5. C# 给word文档添加水印

    和PDF一样,在word中,水印也分为图片水印和文本水印,给文档添加图片水印可以使文档变得更为美观,更具有吸引力.文本水印则可以保护文档,提醒别人该文档是受版权保护的,不能随意抄袭.前面我分享了如何给 ...

  6. Java POI 解析word文档

    实现步骤: 1.poi实现word转html 2.模型化解析html 3.html转Map数组 Map数组(数组的操作处理不做说明) 1.导jar包. 2.代码实现 package com.web.o ...

  7. [java,2017-05-04] 创建word文档

    package test; import java.text.SimpleDateFormat; import java.util.Date; import com.aspose.words.Data ...

  8. 【Java】导出word文档之freemarker导出

    Java导出word文档有很多种方式,本例介绍freemarker导出,根据现有的word模板进行导出 一.简单导出(不含循环导出) 1.新建一个word文件.如下图: 2.使用word将文件另存为x ...

  9. [转载]Java动态填充word文档并上传到服务器

    一. 需求背景 在一些特殊应用场合,客户希望在服务器上生成文档的同时并填充数据,客户端的页面不显示打开文档,但是服务器上生成文档对服务器压力很大,目前服务器上生成文档第一种就是方式是jacob, 但是 ...

  10. [原创]Java动态填充word文档并上传到服务器

    一. 需求背景 在一些特殊应用场合,客户希望在服务器上生成文档的同时并填充数据,客户端的页面不显示打开文档,但是服务器上生成文档对服务器压力很大,目前服务器上生成文档第一种就是方式是jacob, 但是 ...

随机推荐

  1. docker存储管理及实例

    一.Docker存储概念 1.容器本地存储与Docke存储驱动 容器本地存储:每个容器都被自动分配了内部存储,即容器本地存储.采用的是联合文件系统.通过存储驱动进行管理. 存储驱动:控制镜像和容器在 ...

  2. multiprocessing 让子进程忽略信号,手动关闭子进程

    起因 同事想要写一个代码,主进程中监听SIGINT.SIGTERM信号退出,并关闭启动的子进程,代码类似这样 import signal import sys import time from mul ...

  3. C#:winform窗体 实现类似QQ的窗体在桌面边缘停靠和隐藏

    设计思路:1.使用定时器(Timer)来监控鼠标位置和窗体位置,并实现窗体的停靠和隐藏2.当鼠标拖动窗体时,窗体才有可能根据自身位置决定是否停靠3.如果窗体四周没有接触到屏幕边缘则不会停靠4.如果窗体 ...

  4. Python数据科学手册-Pandas:累计与分组

    简单累计功能 Series sum() 返回一个 统计值 DataFrame sum.默认对每列进行统计 设置axis参数,对每一行 进行统计 describe()可以计算每一列的若干常用统计值. 获 ...

  5. BUUCTF Misc 被偷走的文件

    首先下载文件打开 得到一个流量文件 用wireshark打开 打开后 进行分析 看到有ftp流量,于是过滤ftp 看到被偷走的是flag.rar 接下用binwalk进行分离 binwalk -e f ...

  6. 【疑难杂症】关于pycharm无法安装插件显示网络错误问题

    今天实在受不了英文的pycharm了,想着赶紧装个中文的插件,结果插件界面给我说我网络有问题 search results are not loaded check the internet conn ...

  7. MySQL数据表更新模板

    -- ---------------------------- -- 新增表 -- ---------------------------- CREATE TABLE `biz_circle_lead ...

  8. 监控平台SkyWalking9入门实践

    简便快速的完成对分布式系统的监控: 一.业务背景 微服务作为当前系统架构的主流选型,虽然可以应对复杂的业务场景,但是随着业务扩展,微服务架构本身的复杂度也会膨胀,对于一些核心的业务流程,其请求链路会涉 ...

  9. C字符串和C++中string的区别

    在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别:   C字符串 string对象(C++) 所需的头文件名称 ...

  10. python中类与对象的命名空间(静态属性的陷阱)、__dict__ 和 dir() 在继承中使用说明

    1. 面向对象的概念 1)类是一类抽象的事物,对象是一个具体的事物:用类创建对象的过程,称为实例化. 2)类就是一个模子,只知道在这个模子里有什么属性.什么方法,但是不知道这些属性.方法具体是什么: ...