java操作word生成水印升级版

通过Java程序在Word文档中添加文本水印和图片水印 水印是在文档或图片上添加的一种透明或半透明的标记,通常用于保护文档版权、防止盗用、确认文件归属等目的,通常包含文字、图像等多种元素。通过Microsoft Word 可以向文档添加文本和图片水印。除此之外,我们也可以利用Free Spire.Doc for Java库,以编程的方法实现该功能。下面是具体的方法和示例代码。 ​ 阅读详情

很高端但是好像不能用

我这有能用的   pdf word  picture  添加图片水印源码  点击打开链接   jar包

package com.ekingstar.zcgl.bean.waterPrint;  
  
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
  
public class TestWaterWord {
    public TestWaterWord() {}
    private static TestWaterWord instance;
    private Dispatch aDoc = null;//用于存储一个文档:比如新增一个文档时返回,新增的文档
    private Dispatch activeWindow = null;//当前活动窗口
    private Dispatch docSelection = null;//存储当前被选中文档
    private Dispatch wordDocs = null;//存储所有的文档
    private String fileName;
    private ActiveXComponent wordApp;//Word对象
    public final static synchronized TestWaterWord getInstance() {
        if (instance == null){
            instance = new TestWaterWord();
        }
        return instance;
    }


    /*** 初始化Word对象*/
    public boolean initWordApp() {
        boolean retFlag = false;
        //初始化com线程【相当于打开冰箱门,准备放大箱】
        //使用结束后要调用 realease方法关闭线程【相当于关上冰箱门】
        ComThread.InitSTA();
        wordApp = new ActiveXComponent("Word.Application");// 初始化word应用程序,初始化表格是:Excel.Application
        try {
            wordApp.setProperty("Visible", new Variant(false));//配置启动word时是显示执行还是隐式执行
            wordDocs = wordApp.getProperty("Documents").toDispatch();// 获取word所有文档对象
            retFlag = true;
        } catch (Exception e) {
            retFlag = false;
            e.printStackTrace();
        }
        return retFlag;
    }


    /**打开一个已存在的文档*/
    public void openDocument(String docPath) {
        if (this.aDoc != null) {
            this.closeDocument();
        }
        aDoc = Dispatch.call(wordDocs,"Open",new Variant(docPath)).toDispatch();//docPath要打开的文档的详细地址
        docSelection = Dispatch.get(wordApp, "Selection").toDispatch();//获得该文档对象,并返回
    }


    /** 取得活动窗体对象*/
    public void getActiveWindow() {
        activeWindow = wordApp.getProperty("ActiveWindow").toDispatch();// 取得活动窗体对象
    }


    /***创建一个新的word文档*/
    public void createNewDocument() {
        aDoc = Dispatch.call(wordDocs, "Add").toDispatch();//创建一个新的word文档,并返回
        docSelection = Dispatch.get(wordApp, "Selection").toDispatch();//获得该文档对象,并返回
    }


    /*** 保存并关闭当前word文档*/
    public void closeDocument() {
        if (aDoc != null) {
            Dispatch.call(aDoc, "Save");//保存
            Dispatch.call(aDoc, "Close", new Variant(0));//关闭
            aDoc = null;
        }
    }


    /*** 关闭Word资源*/
    public void closeWordObj() {
        wordApp.invoke("Quit", new Variant[] {});// 关闭word文件
        ComThread.Release();// 释放com线程。根据jacob的帮助文档,com的线程回收不由java的垃圾回收器处理
    }


    /**
     * 插入图片
     * @param pages 总页数
     * @param imgPath 图片路径
     * @param left 距离左上角位置
     * @param top 距离上角位置
     */
    public void setImages(int pages,String imgPath,int left,int top){
        for(int i = 0; i < pages;i++){ 
            Dispatch selection = Dispatch.get(wordApp, "Selection").toDispatch(); 
            Dispatch inLineShapes = Dispatch.get(selection, "InLineShapes").toDispatch();
            Dispatch picture = Dispatch.call(inLineShapes, "AddPicture", imgPath).toDispatch();
            //选中图片 
            Dispatch.call(picture, "Select"); 
            //设置宽度高度 
            Dispatch.put(picture, "Width", new Variant(100));
            Dispatch.put(picture, "Height", new Variant(100)); 
            //设置图片相对左上角偏移位置
            selection = Dispatch.get(wordApp, "Selection").toDispatch();
            Dispatch shapeRange = Dispatch.get(selection, "ShapeRange").toDispatch();
            Dispatch.put(shapeRange, "Left", new Variant(left));
            Dispatch.put(shapeRange, "Top", new Variant(top));


            //翻到下一页 
            Dispatch browser = Dispatch.get(wordApp, "Browser").toDispatch();
            Dispatch.call(browser, "Next");
        }
    }


    /**
     * 设置页眉
     * @param waterMarkStr
     */
    public void setHeader(String headerStr) {
        Dispatch activePane = Dispatch.get(activeWindow, "ActivePane").toDispatch();// 活动窗格
        Dispatch view = Dispatch.get(activePane, "View").toDispatch();// 视窗对象


        Dispatch.put(view, "SeekView", new Variant(9));// 打开页眉,值为9,页脚值为10
        Dispatch headerfooter = Dispatch.get(docSelection, "HeaderFooter").toDispatch();// 获取页眉和页脚


        Dispatch range = Dispatch.get(headerfooter, "Range").toDispatch();//页眉赋值
        Dispatch.put(range, "Text", new Variant(headerStr));


        Dispatch font = Dispatch.get(range, "Font").toDispatch();//设置字体
        Dispatch.put(font, "Name", new Variant("微软雅黑"));
        Dispatch.put(font, "Bold", new Variant(true));
        Dispatch.put(font, "Size", 20);
        Dispatch.put(font, "Color", Integer.valueOf("0000FF",16).toString());//颜色是16进制倒着写,然后转10进制


        Dispatch.put(view, "SeekView", new Variant(0)); //0表示恢复视图;
    }




    /** 文档设置图片水印,waterPic水印图片路径*/
    public void setWaterPic(String waterPic) {
        Dispatch activePane = Dispatch.get(activeWindow, "ActivePane").toDispatch();// 活动窗格
        Dispatch view = Dispatch.get(activePane, "View").toDispatch();// 视窗对象


        Dispatch.put(view, "SeekView", new Variant(9));// 打开页眉,值为9,页脚值为10
        Dispatch headerfooter = Dispatch.get(docSelection, "HeaderFooter").toDispatch();// 获取页眉和页脚


        Dispatch shapes = Dispatch.get(headerfooter, "Shapes").toDispatch();// 获取水印图形对象


        //调用shapes对象的AddPicture方法将图片插入当前文档
        Dispatch picture  = Dispatch.call(shapes,"AddPicture",waterPic).toDispatch();


        Dispatch.call(picture, "Select");//选择当前word文档的图片水印


        Dispatch.put(picture, "Left", new Variant(120));//设置图片水印参数
        Dispatch.put(picture, "Top", new Variant(240));
        Dispatch.put(picture, "LockAspectRatio", new Boolean(true));//调整大小时保持其长宽比例不变
        Dispatch.put(picture, "Width", new Variant(120));
        Dispatch.put(picture, "Height", new Variant(90));


        Dispatch.put(view, "SeekView", new Variant(0));//关闭页眉,0表示恢复视图;
    }


    /** 文档设置文字水印--实质是设置页眉,将文字转为艺术字图片*/
    public void setWaterMark(String waterMarkStr) {
        Dispatch activePane = Dispatch.get(activeWindow, "ActivePane").toDispatch();// 活动窗格
        Dispatch view = Dispatch.get(activePane, "View").toDispatch();// 视窗对象


        Dispatch.put(view, "SeekView", new Variant(9));// 打开页眉,值为9,页脚值为10
        Dispatch headerfooter = Dispatch.get(docSelection, "HeaderFooter").toDispatch();// 获取页眉和页脚


        Dispatch shapes = Dispatch.get(headerfooter, "Shapes").toDispatch();// 获取水印图形对象


        /**插入文字,并转为图片:
         * 操作对象、方法、艺术字格式[0白色、1黑左下右上,2黑中上两下、3黑中小两大、4黑竖排、5黑中下两上]
         * 水印内容、字体、字体大小、字体是否粗体、字体是否斜体
         * 左边距、上边距
         */
        Dispatch selection = Dispatch.call(shapes, "AddTextEffect",new Variant(0), 
                waterMarkStr, "微软雅黑", new Variant(10),new Variant(true), new Variant(false), 
                new Variant(150),new Variant(250)).toDispatch();


        //选中当前文档水印
        Dispatch.call(selection, "Select");
        Dispatch shapeRange = Dispatch.get(docSelection, "ShapeRange").toDispatch();


        /**
         * 设置水印透明度和颜色
         */
        Dispatch.put(shapeRange, "Name", "PowerPlusWaterMarkObject6");
            Dispatch textEffect = Dispatch.get(shapeRange, "TextEffect").toDispatch();
            Dispatch.put(textEffect, "NormalizedHeight", new Boolean(false));


            Dispatch line = Dispatch.get(shapeRange, "Line").toDispatch();
            Dispatch.put(line, "Visible", new Boolean(false));


            Dispatch fill = Dispatch.get(shapeRange, "Fill").toDispatch();
            Dispatch.put(fill, "Visible", new Boolean(true));
            Dispatch.put(fill, "Transparency", new Variant(0.1));// 设置水印透明度


                Dispatch foreColor = Dispatch.get(fill, "ForeColor").toDispatch();
                Dispatch.put(foreColor, "RGB", new Variant(255));// 设置水印颜色


            Dispatch.call(fill, "Solid");


        /**
         * 设置水印旋转角度、水印大小
         */
        Dispatch.put(shapeRange, "Rotation", new Variant(0));//旋转角度
        Dispatch.put(shapeRange, "LockAspectRatio", new Boolean(true));//调整大小时保持其长宽比例不变
        Dispatch.put(shapeRange, "Height", new Variant(10));//高
        Dispatch.put(shapeRange, "Width", new Variant(40));//宽
        Dispatch.put(shapeRange, "Left", new Variant(160));
        Dispatch.put(shapeRange, "Top", new Variant(270));


        Dispatch.put(view, "SeekView", new Variant(0));//0表示恢复视图;
    }


    public String getFileName() {
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }


    //测试功能
    public static void main(String[] argv) {
        TestWaterWord d = TestWaterWord.getInstance();
        try {
            if (d.initWordApp()) {
                d.openDocument("d:/1.docx");
                d.getActiveWindow();


                String imgPath="d:/1.png";
                d.setWaterPic(imgPath);//页中图片


                Date date=Calendar.getInstance().getTime();
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
                String waterDate=sdf.format(date);
                d.setWaterMark(waterDate);//日期


                d.setHeader("****科技");//页眉


                d.closeDocument();
            } else{
                System.out.println("初始化Word读写对象失败!");
            }
        } catch (Exception e) {
            System.out.println(e);
        }finally{
            d.closeWordObj();
        }
    }
    }

Java针对不同文件加水印 背景 需求需要对不同文件加水印,例如:jpg,png,pdf,word 由于不同文件不同的方式,所以进行逐个功能开发 调研 图片文件(jpg,png,e.g.):通过ImageIO PDF:1.itextpdf 2.pdfbox Word:1.通过Free Spire for Doc 2.apache poi 分析 对比 图片文件,最好选择就是通过ImageIO,ImageIO为Java的自带工具类javax.imageio.ImageIO PDF下 itext官网url:https://it 阅读详情

相关推荐

Java 添加Word文本水印、图片水印

水印是一种常用于各种文档的声明、防伪手段,一般可设置文字水印或者加载图片作为水印。以下内容将分享通过Java编程给Word文档添加水印效果的方法,即 文本水印 图片水印 使用工具:Free Spire.Doc for Java 2.0.0(免费版) Jar导入 方法1:通过官网下载控件包。在程序下新建一个directory目录,并命名(本示例中命名为lib);将控件包l...

akn76920的博客 1072

java操作wordpdf图片生成图片水印

大哥 还是大姐不要再删了 我要崩溃了 我上传的资源就是有关于javaja操作wordpdf图片生成图片水印的 一些相关资料而已

Aspose.Java实现word转pdf,添加水印操作

Aspose.Java实现word转pdf,添加水印操作. word转pdf二. 文档插入水印 Aspose是一款商用版控件,支持各类文档操作,这里主要介绍如何在Springboot项目中使用破解版。 一. word转pdf 在项目中导入aspose.word包 百度网盘下载 提取码:pokb 新建一个asposeUtil类,类中建立如下静态方法 /** * @param wordPath 需要被转换的word全路径带文件名 * @param pdfPath 转换之

koooooooo5的博客 2079

图片按比例缩放_word图片比例缩放,固定长高

word宏命令,Alt+F8创建宏比例缩放Dim iSha As InlineShapeDim picwidthDim picheightFor Each iSha In ActiveDocument.InlineShapes If iSha.Type = wdInlineShapePicture Then iSha.LockAspectRatio = msoFalse '不锁...

weixin_29062865的博客 371

word中添加java代码怎么写_Java 如何给Word文档添加多行文字水印

前言我在以往的文章中曾介绍过如何给Word文档添加文本水印和图片水印,及怎样删除文档中的水印。关于文本水印,之前那篇教程里主要指的是单行字体的水印,而在操作Word文档时,有时也会碰到需要添加多行文字水印的情况。所以,本文将演示如何使用Java程序来为Word文档添加多行文字水印。代码测试环境:Intellij Idea2019.1JDK 1.8.0Spire.Doc.jarJar包获取及导入方法...

weixin_32052253的博客 1199

java word文档添加水印

支持一行多个,一页多行水印,支持使用libreoffice将word转pdf后水印有效

2265

Java 使用POI 给Word添加水印

Maven 引入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> ...

yunye的专栏 1万+

Javaword文档中添加水印

前言: 水印可以说是一个标识,有时我们希望向文档中插入公司名称作为水印,或者将公司logo插入到文档中作为水印。先来看看本地word文档如何插水印吧! 然后选择图片水印或者文字水印即可。 那么想要通过Java代码用程序将指定的图片/文本当做水印插入到指定的word文档中,要怎么办呢?这需要开发者具备将activex控件集成到Java环境的能力。对于大部分Java开发工程师来说,仅仅解...

一只蜗牛的博客 1万+

如何用java代码给Word文档添加水印

为防止非法使用、定义所有权、显示文档状态等多种目的,在 Word 文档中添加水印。在本文中,您将学习如何使用 JavaWord 文档添加水印。文章将分别演示如何将文字和图片水印插入到Word文档中。 给 Word 文档添加文字水印Word 文档添加图像水印 为了处理 Word 文档中的目录,我们将使用Aspose.Words for Java,它是一个强大的文字处理 API,可让您创建、修改或转换 Word 文档。如果想要测试这项功能,可下载Aspose.Words for Java最新版。

mnrssj的博客 5865

java使用poi给word添加多个水印

限制高版本的docx 一、解决poi给word添加水印遇到的问题: 1、遇到有页眉的word水印添加失败 2、水印最底层被图片表格覆盖 二、解决思路: 1、把原来的页眉删除或者覆盖 2、水印只能在底层,那么我给它加多个水印 三、结果: 四、代码 maven配置 <dependency> <groupId>org.apache.poi</groupId> <artifact

z172989496的专栏 8217

java给图片、word、ppt、excel、pdf添加水印

java给图片、word、ppt、excel、pdf添加水印 使用poi、itextpdf、imageio等技术 maven配置 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version>

z172989496的专栏 6916

java poi 操作word模板生成文件 去除word水印图片+文中图片+边框

package com.zvalley.epp.test; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.data.PictureRenderData; import com.zvalley.epp.util.ImageUtil; import io.jsonwebtoken.lang.Assert; import lombok.SneakyThrows; import org.apache.poi.xwpf.model.XW.

coupman的博客 2937

java代码为word中添加水印图片。

这个方法不能说是真正意义上的添加水印,因为真正添加水印的方法很全面。他可以将字转为水印,或者将图片变成半透明,放入word中。 而我这个方法只是在插入图片的基础上,做了一点点改进,可以设置图片的位置,而不是用字符串写在固定的位置,用图片替换。这样的坏处有两点,一是他只能固定位置不动,二是他永远不能覆盖与你的文本之上。类似人为的盖章。他做不到。ok you know! 插入的水印图片的话,让你的美工...

焦糖橙子 5243

Java 添加和删除Word文档水印

Word水印分为文本水印和图片水印两种。文本水印可以表明当前文档的一种状态,比如草稿、保密、已认证等,图片水印则可以用于指定一个公司的logo。 这篇文章介绍如何使用Java和Free Spire.Doc for Java组件给Word文档添加文本水印和图片水印,以及如何从Word文档中删除水印。 添加Jar或Maven依赖 在开始前,我们需要导入jar文件。下载Free Spire.Do...

Eiceblue的专栏 3273

Java操作Word文档添加水印(文字/图片)

水印是一种常用于各种文档的声明、防伪手段,一般可设置文字水印或者加载图片作为水印。以下内容将分享通过Java编程给Word文档添加水印效果的方法。 使用工具:Free Spire.Doc for Java 2.0.0(免费版) 为了方便大家阅读,这里我新建了一个工程,把需要添加水印的文档(test、test1)一并放到根目录下,如图 接下来去官方网址下载jar包,如下图,下...

IT_0417的博客 5703

java使用Spire.Doc生成word文件去除水印(头部的警告信息)

java使用Spire.Doc生成word文件去除水印(头部的警告信息)

L_Open2021的博客 1万+

java操作word生成水印

应用场景         为了保护版权或辨别文件的真伪,有时需要在生成Word文件中动态添加水印,PageOffice组件的WaterMark类就封装了给在线编辑的Word文件添加水印这一功能,调用接口非常简单。WaterMark类所属命名空间         com.zhuozhengsoft.pageoffice.wordwriter支持两种水印  插入文字水印(核心代码):1 Wo...

wqqqianqian的博客 952
上一篇: 水印融合到jsp代码
下一篇: String的== 与equals详解
达文西不辅助
博客等级 码龄13年 3299粉丝 146原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值