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

Java: 为Word文档添加水印

时间:2022-08-23 17:33:33浏览次数:168  
标签:document Java 水印 文档 import Word Document

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 {

                   //添加段落到页眉中

                   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/Gia-/p/16617148.html

相关文章

  • 十年老程序员:C、Python、Java 不可兼得,专心学好一门编程语言就行!
    序言哈喽兄弟萌,很多铁铁在刚开始学编程的时候,总是避免不了看到某些哗众取宠的博主发的视频或者文章,说建议同时学好几门语言,一尝试发现,同时学好几个编程语言确实没有压......
  • JavaScript之Object.assign()方法详解
    Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。语法:Object.assign(target,...sources)target:目标对象。sourc......
  • Java Servlet 入门:问题系列:java.lang.NoClassDefFoundError
    问题来源:java.lang.NoClassDefFoundError1、新建了一个java项目,定义一个类:  2、右键属性,Export,导出Jar包: 按  完成后。在另一个项目引用:运行结果  ......
  • java用括号拆分字符串
    我有一个遵循这种模式的String列表:'Namewithspace(field1_field2)CONST'我想提取:带空格的名称括号内的值括号后的CONST值对于括号中的字符串()我正在使用:\(.*......
  • 使用EasyExcel报错 com.alibaba.excel.exception.ExcelGenerateException: java.lang.
    使用EasyExcel报错com.alibaba.excel.exception.ExcelGenerateException:java.lang.NoClassDefFoundError:org/apache/poi/POIXMLTypeLoader报错原因:缺少依赖或者依赖......
  • 第一篇:自学Java-MarkDown语法学习
    Day01目录Day01MarkDown学习标题:三级标题四级标题字体引用分割线图片超链接列表表格代码MarkDown学习标题:三级标题四级标题字体Hello,World!Hello,World!Hello,......
  • Java 汉字转拼音
    需求背景因为用户前台输入的是汉字,但是在创建图数据库的Tag节点的时候,虽然能用中文,但是我觉得还是不要用了,就像是Java也能定义中文的类和字段一样奇怪,但是又没......
  • Java数组(狂神说Java)
    一、数组声明创建与使用首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的方法:dataType[]arrayRefVar;//首选的方法dataTypearrayRefVar[];//效......
  • 学习Java最佳学习方法
    看到这篇文章的基本上都动过自学Java这个念头,作为IT圈目前应用最广、最受开发者青睐的编程语言,Java成为了很多IT小白入行IT圈的首选。不过大家都会遇到这样一个问题,java应......
  • 前言 - JavaScript指南
    前  言 读书是一件快乐的事情。读书能够增长知识,了解社会,了解人类的思想,继而转换成智慧。无论是什么人,都需要读书,多读书,读好书,同时也要把书中的精髓记录下......