• 如何通过Java代码给Word文档添加水印?


    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 文件。

    复制代码
    
    
            
    
                com.e-iceblue
    
                https://repo.e-iceblue.cn/repository/maven-public/
    
            
    
        
    
    
    
        
    
            e-iceblue
    
            spire.doc.free
    
            5.2.0
    
        
    
    
    复制代码

    给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 );
        }
    }
    复制代码

    —谢谢您的观看—

     

  • 相关阅读:
    科普文:一文搞懂jvm实战(四)深入理解逃逸分析Escape Analysis
    element table表格行列合并span-method,根据数据动态行列合并
    【饭谈】软素质怎么提高?(适合软件测试人的专用办法)
    Jmeter基础入门教程【23】--常用功能详解:断言持续时间
    【PTA】蛇形矩阵
    从mybatis-plus-generator看如何编写代码生成器
    zabbix监控触发器与报警动作
    Python爬虫之Web自动化测试工具Selenium&&Chrome handless
    Linux系统中搭建DNS服务器
    你知道Spring是怎么将AOP应用到Bean的生命周期中的吗?
  • 原文地址:https://www.cnblogs.com/Carina-baby/p/16893350.html