首页 > 编程语言 >Java: 为Word文档添加水印

Java: 为Word文档添加水印

时间:2023-04-12 19:56:26浏览次数:50  
标签:document Java 水印 文档 import Word Document

Java: 为Word文档添加水印
原文链接:https://www.cnblogs.com/Gia-/p/16617148.html

Java: Word文档添加水印

添加水印是文档操作中一个非常实用的功能,通过给文档添加指定文字或图片水印既可以标识文档的状态,也可以维护文档版权,丰富其外观。在这篇文章中,我将从以下四个板块介绍如何使用Free Spire.Doc for Java为Word文档添加水印。

 

 

安装Spire.Doc.Jar

方法一:

如果您使用的是 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>
复制代码

 

方法二:

如果您没有使用 maven,则可以从此链接下载Free Spire.Doc for Java,下载完成后,将下载包进行解压;然后在IDEA中创建一个新项目,依次点击“文件”(File),“项目结构”(Project Structure),“组件”(Modules),“依赖项”(Dependencies),再点击右方绿色“+”下的第一个选项“JAR文件或路径”(JARs or Directories),找到之前解压好的文件,并将其中的lib文件夹下的Spire.Doc.jar文件导入到项目中。

 

Word文档添加文本水印

 

  • 创建一个Document实例,并使用 Document.loadFromFile()方法加载一个Word示例文档。
  • 使用 Document.getSections().get()方法获取第一节。
  • 创建TextWatermark实例。
  • 使用 TextWatermark 类提供的方法设置文本水印的文本、字体大小、颜色和布局。
  • 使用 Section.getDocument().setWatermark() 方法将文本水印添加到示例文档。
  • 使用 Document.saveToFile()方法将文档保存到另一个文件。

 

复制代码
import com.spire.doc.*;
import com.spire.doc.documents.WatermarkLayout;
import java.awt.*;
public class Textwatermark {
    public static void main(String[] args) throws Exception {
        //创建一个Document实例

        Document document = new Document();
        //加载一个Word示例文档

        document.loadFromFile("sample.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("SingleWatermark.docx", FileFormat.Docx);
    }
}
复制代码

 

 

Word文档添加多行文本水印

  • 创建一个Document实例,并使用 Document.loadFromFile()方法加载一个示例 Word 文档。
  • 使用 ShapeObject 确定艺术字形状,并设置其大小和样式。
  • 通过 HeaderFooter 类获取该节的页眉,然后使用 header.addParagraph()方法将段落添加到页眉中。
  • 复制艺术字形状,并使用 paragraph.getChildObjects().add(shape) 方法将其添加到多个位置。
  • 使用 Document.saveToFile()方法将文档保存到另一个文件。
复制代码
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.HeaderFooter;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.ShapeLineStyle;
import com.spire.doc.documents.ShapeType;
import com.spire.doc.fields.ShapeObject;
import java.awt.*;
public class MultipleTextwatermarks {
    public static void main(String[] args) throws Exception {
        //加载一个Word示例文档

        Document document = new Document();
        document.loadFromFile("sample.docx");
        //添加艺术字形状并设置其大小

        ShapeObject shape = new ShapeObject(document, ShapeType.Text_Plain_Text);
        shape.setWidth(60);
        shape.setHeight(20);
        //设置图案文本,位置和样式

        shape.setVerticalPosition(40);
        shape.setHorizontalPosition(20);
        shape.setRotation(315);
        shape.getWordArt().setText("请勿复制");
        shape.setFillColor(Color.red);
        shape.setLineStyle(ShapeLineStyle.Single);
        shape.setStrokeColor(new Color(245, 192, 192, 255));
        shape.setStrokeWeight(1);
        Section section;
        HeaderFooter header;
        for (int n = 0; n < document.getSections().getCount(); n++) {
            section = document.getSections().get(n);
            //获取该节的页眉

            header = section.getHeadersFooters().getHeader();
            Paragraph paragraph;
            for (int i = 0; i < 5; i++) {
                //添加段落到页眉中

                paragraph = header.addParagraph();
                for (int j = 0; j < 4; j++) {
                    //复制艺术字形状并其添加到多个位置

                    shape = (ShapeObject) shape.deepClone();
                    shape.setVerticalPosition(50 + 150 * i);
                    shape.setHorizontalPosition(20 + 160 * j);
                    paragraph.getChildObjects().add(shape);
                }
            }
        }
        //将文档保存到另一个文件

        document.saveToFile("Multiplewatermarks.docx", FileFormat.Docx_2013);
    }
}
复制代码

 

Word文档添加片水印

  • 创建一个Document实例,并使用 Document.loadFromFile()方法加载一个Word示例文档。
  • 创建PictureWatermark实例。
  • 使用PictureWatermark.setPicture()方法加载图像作为图片水印,然后设置图片样式。
  • 使用Document.setWatermark()方法将图片水印添加到示例文档。
  • 使用Document.saveToFile()方法将文档保存到另一个文件。

 

复制代码
import com.spire.doc.*;
public class ImageWatermark {
       public static void main(String[] args){
           //创建一个 Document 实例

           Document document = new Document();
           //加载一个Word示例文档

           document.loadFromFile("sample.docx");
           //创建PictureWatermark实例

           PictureWatermark picture = new PictureWatermark();
           //设置图片格式

           picture.setPicture("logo.png");
           picture.setScaling(150);
           picture.isWashout(false);
           //将图片水印添加到示例文档

           document.setWatermark(picture);
           //保存结果文档

       document.saveToFile("SingleImagewatermark.docx",FileFormat.Docx );
       }
}
复制代码

 

Word文档添加多行片水印

 

  • 创建一个Document实例,并使用 Document.loadFromFile()方法加载一个示例 Word 文档。
  • 使用DocPicture.loadImage()方法加载图像。
  • 使用picture.setTextWrappingStyle()方法设置图片的文本环绕样式。
  • 通过HeaderFooter类获取该节的页眉,然后使用header.addParagraph()方法将段落添加到页眉中。
  • 复制图片并使用paragraph.getChildObjects().add(image)方法将其添加到多个位置。
  • 使用Document.saveToFile()方法将文档保存到另一个文件。

 

复制代码
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.HeaderFooter;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextWrappingStyle;
import com.spire.doc.fields.DocPicture;
public class MultipleImageWatermarks {
       public static void main(String[] args){
           //创建一个 Document 实例

           Document document = new Document();
           //加载一个Word示例文档

           document.loadFromFile("sample.docx");
           //加载图片

           DocPicture picture = new DocPicture(document);
           picture.loadImage("logo.png");
           //设置文本环绕样式

           picture.setTextWrappingStyle(TextWrappingStyle.Behind);
           for (int n = 0; n < document.getSections().getCount(); n++) {
               Section section = document.getSections().get(n);
               //获取该节的页眉

               HeaderFooter header = section.getHeadersFooters().getHeader();
               Paragraph paragraph;
               if(header.getParagraphs().getCount()>0){
                   paragraph=header.getParagraphs().get(0);
               }else {
               </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">添加段落到页眉中</span>
paragraph = header.addParagraph(); } for (int p = 0; p < 5; p++) { for (int q = 0; q < 4; q++) { //复制图片并添加到多个位置 picture = (DocPicture)picture.deepClone(); picture.setVerticalPosition(100 + 200 * p); picture.setHorizontalPosition(50 + 210 * q); paragraph.getChildObjects().add(picture); } } } //保存结果文档 document.saveToFile("MultipleImagewatermarks.docx",FileFormat.Docx ); } }
复制代码

 

 

标签:document,Java,水印,文档,import,Word,Document
From: https://www.cnblogs.com/sunny3158/p/17311015.html

相关文章

  • Javaweb文件上传至服务器/从服务器下载
    Javaweb文件上传至服务器/从服务器下载思路图文件上传思路:也可以直接看代码判断是不是文件表单(判断form的enctype是不是="multipart/form-data"),因为只有文件表单才能上传文件创建DiskFileItemFactory对象,用于构建一个解析上传数据的工具对象创建一个解析上传......
  • JavaWeb技术栈图(web服务器+web容器是何物)
    JavaWeb技术栈图(web服务器+web容器是何物)两个重要概念web服务器+web容器什么是Web服务器?Tomcat服务器就是一个免费的开放源代码的Web应用服务器web服务实际上就是解析了客户端/浏览器发来的http请求,并将其做出一定的处理。比如说将请求头和请求体中的各个元素拆开打包成一......
  • JavaScript基础知识
    JavaScript基础知识JavaScript是什么?JavaScript是一门编程语言,可以实现很多的网页交互效果。开web页面的脚本语言JavaScript的书写位置?内部JavaScript写在body结束标签上方script里面外部JavaScript通过scriptsrc=引入js文件但是script里面不要写内容,否则会被忽略JavaSc......
  • JavaWeb之Servlet详解(以及浏览器调用 Servlet 流程分析图)
    Servlet1.什么是ServletServlet(java服务器小程序)他是由服务器端调用和执行的(一句话:是Tomcat解析和执行)他是用java语言编写的,本质就是Java类他是按照Servlet规范开发的(除了tomcat->Servletweblogic->Servlet)功能强大,可以完成几乎所有的网站功能2.开发......
  • Java byte[] 和 String互相转换
    Javabyte[]和String互相转换原文链接:https://blog.csdn.net/qq_19734597/article/details/115865372通过用例学习Java中的byte数组和String互相转换,这种转换可能在很多情况需要,比如IO操作,生成加密hash码等等。除非觉得必要,否则不要将它们互相转换,他们分别代表了不同的数据,......
  • JavaWeb中Servlet、web应用和web站点的路径细节("/"究竟代表着什么)
    JavaWeb中Servlet、web应用和web站点的路径细节("/"究竟代表着什么) 1开门见山新建一个tomcatweb项目,配置tomcat的虚拟目录,取默认值(/项目名_war_exploded)那么如果你的tomcat的默认站点(即http://localhost:8080)没有更改的话,这个项目的两个重要的根目录就出来了web站点根目......
  • Java基础语法
    注释、标识符、关键字注释注释并不会被执行,是给我们程序员看的书写注释是一个非常好的习惯Java注释的分类:单行注释://多行注释:/****/文档注释标识符标识符的作用用来表示变量名、类名、方法名、数组名和文件名等是一个有效的字符序列......
  • javaweb-学习创建servlet
    Servlet创建、声明、映射,利⽤ServletContext统计⼀个⽹站的访问总量。1)、创建一个servelet选择要用到的方法2)、编辑serveletpackagecom.cont;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletContext;importjavax.servlet.Ser......
  • 阿里云 SMS 短信 Java SDK 封装
    Github&Issues: https://github.com/cn-src/aliyun-sms官方文档:https://help.aliyun.com/document_detail/55284.html?spm=5176.8195934.1001856.3.5cd64183fNqodO ......
  • PAT-basic-1028 人口普查 java c++
    一、题目某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过......