使用JACOB给WORD添加水印

  • 代码如下

代码如下

package com;import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import com.jacob.com.ComThread;public class WordInsertPicture {public WordInsertPicture() {}// 声明一个静态的类实例化对象private static WordInsertPicture instance;// 声明word文档对象private Dispatch doc = null;// 声明word文档当前活动视窗对象private Dispatch activeWindow = null;// 声明word文档选定区域或插入点对象private Dispatch docSelection = null;// 声明所有word文档集合对象private Dispatch wrdDocs = null;// 声明word文档名称对象private String fileName;// 声明ActiveX组件对象:word.Application,Excel.Application,Powerpoint.Application等等private ActiveXComponent wrdCom;/*** 获取Word操作静态实例对象* * @return 报表汇总业务操作*/public final static synchronized WordInsertPicture getInstance() {if (instance == null)instance = new WordInsertPicture();return instance;}/*** 初始化Word对象* * @return 是否初始化成功*/public boolean initWordObj() {boolean retFlag = false;ComThread.InitSTA();// 初始化com的线程,非常重要!!使用结束后要调用 realease方法wrdCom = new ActiveXComponent("Word.Application");// 实例化ActiveX组件对象:对word进行操作try {/** 返回wrdCom.Documents的Dispatch* 获取Dispatch的Documents对象,可以把每个Dispatch对象看成是对Activex控件的一个操作* 这一步是获得该ActiveX控件的控制权。*/wrdDocs = wrdCom.getProperty("Documents").toDispatch();// 设置打开的word应用程序是否可见wrdCom.setProperty("Visible", new Variant(false));retFlag = true;} catch (Exception e) {retFlag = false;e.printStackTrace();}return retFlag;}/*** 创建一个新的word文档* */public void createNewDocument() {// 创建一个新的文档doc = Dispatch.call(wrdDocs, "Add").toDispatch();// 获得当前word文档文本docSelection = Dispatch.get(wrdCom, "Selection").toDispatch();}/*** 取得活动窗体对象* */public void getActiveWindow() {// 获得活动窗体对象activeWindow = wrdCom.getProperty("ActiveWindow").toDispatch();}/*** 打开一个已存在的文档* * @param docPath*/public void openDocument(String docPath) {if (this.doc != null) {this.closeDocument();}this.doc = Dispatch.call(wrdDocs, "Open", docPath).toDispatch();this.docSelection = Dispatch.get(wrdCom, "Selection").toDispatch();}/*** 关闭当前word文档* */public void closeDocument() {if (this.doc != null) {Dispatch.call(this.doc, "Save");Dispatch.call(this.doc, "Close", new Variant(true));this.doc = null;}}/*** 文档设置图片水印* * @param waterMarkPath*            水印路径*/public void setWaterMark(String waterMarkPath) {// 取得活动窗格对象Dispatch activePan = Dispatch.get(this.activeWindow, "ActivePane").toDispatch();// 取得视窗对象Dispatch view = Dispatch.get(activePan, "View").toDispatch();// 打开页眉,值为9,页脚为10Dispatch.put(view, "SeekView", new Variant(9));// 获取页眉和页脚Dispatch headfooter = Dispatch.get(this.docSelection, "HeaderFooter").toDispatch();// 获取水印图形对象Dispatch shapes = Dispatch.get(headfooter, "Shapes").toDispatch();// 给文档全部加上水印,设置了水印效果,内容,字体,大小,是否加粗,是否斜体,左边距,上边距。// 调用shapes对象的AddPicture方法将全路径为picname的图片插入当前文档Dispatch picture = Dispatch.call(shapes, "AddPicture", waterMarkPath).toDispatch();// 选择当前word文档的水印Dispatch.call(picture, "Select");Dispatch.put(picture, "Left", new Variant(0));Dispatch.put(picture, "Top", new Variant(0));Dispatch.put(picture, "Width", new Variant(428));Dispatch.put(picture, "Height", new Variant(452));// 关闭页眉Dispatch.put(view, "SeekView", new Variant(0));}/*** 关闭Word资源* * */public void closeWordObj() {// 关闭word文件wrdCom.invoke("Quit", new Variant[] {});// 释放com线程。根据jacob的帮助文档,com的线程回收不由java的垃圾回收器处理ComThread.Release();}/*** 得到文件名* * @return .*/public String getFileName() {return fileName;}/*** 设置文件名* * @param fileName*            .*/public void setFileName(String fileName) {this.fileName = fileName;}/*** 开始为word文档添加水印* * @param wordPath*            word文档的路径* @param waterMarkPath*            添加的水印图片路径* @return 是否成功添加*/public boolean addWaterMark(String wordPath, String waterMarkPath) {try {if (initWordObj()) {openDocument(wordPath);getActiveWindow();setWaterMark(waterMarkPath);closeDocument();closeWordObj();return true;} elsereturn false;} catch (Exception e) {e.printStackTrace();closeDocument();closeWordObj();return false;}}/** public boolean addWaterMark(String wordPath, String waterMarkPath) { try* { if (initWordObj()) { openDocument(wordPath); getActiveWindow();* setWaterMark(waterMarkPath); closeDocument(); closeWordObj(); return* true;* * } else return false; } catch (Exception e) { e.printStackTrace();* closeDocument(); closeWordObj(); return false; } }*/public boolean insertImage(String wordPath, String imagePath) {try {if (initWordObj()) {openDocument(wordPath);getActiveWindow();// 用于指定位置MoveRight以及MoveDownDispatch selection = Dispatch.get(wrdCom, "Selection").toDispatch();for (int i = 0; i < 10; i++) {Dispatch.call(selection, "MoveRight");}for (int i = 0; i < 10; i++) {Dispatch.call(selection, "MoveDown");}Dispatch image = Dispatch.get(selection, "InlineShapes").toDispatch();Dispatch dv = Dispatch.call(image, "AddPicture", imagePath).toDispatch();Dispatch.call(dv, "Select");// Dispatch Left = Dispatch.get(position, "Left").toDispatch();selection = Dispatch.get(wrdCom, "Selection").toDispatch();Dispatch shaperange = Dispatch.get(selection, "ShapeRange").toDispatch();Dispatch wf = Dispatch.get(shaperange, "WrapFormat").toDispatch();Dispatch.put(wf, "Type", "6");int pcnt = Integer.parseInt(Dispatch.call(selection, "information", 4).toString());for (int p = 1; p < pcnt; p++) {Dispatch.invoke(selection, "Goto", Dispatch.Method, new Object[] { 1, 2, String.valueOf(p) },new int[1]);for (int i = 0; i < 10; i++) {Dispatch.call(selection, "MoveRight");}for (int i = 0; i < 10; i++) {Dispatch.call(selection, "MoveDown");}Dispatch imagef = Dispatch.get(selection, "InlineShapes").toDispatch();Dispatch dvf = Dispatch.call(imagef, "AddPicture", imagePath).toDispatch();Dispatch.call(dvf, "Select");// Dispatch Left = Dispatch.get(position,// "Left").toDispatch();selection = Dispatch.get(wrdCom, "Selection").toDispatch();Dispatch shaperangef = Dispatch.get(selection, "ShapeRange").toDispatch();Dispatch wff = Dispatch.get(shaperangef, "WrapFormat").toDispatch();Dispatch.put(wff, "Type", "6");Dispatch.put(selection, "Start", 0); // 回到页首}closeDocument();closeWordObj();return true;} elsereturn false;} catch (Exception e) {e.printStackTrace();closeDocument();closeWordObj();return false;}}/*** 测试功能* */public static void main(String[] argv) {System.out.println("start...");WordInsertPicture wordObj = WordInsertPicture.getInstance();wordObj.addWaterMark("d:\\3.docx", "D:\\1.bmp");System.out.println("end");}
}

使用JACOB给WORD添加水印相关推荐

  1. java使用jacob给word添加水印

    1.操作word需要的jacobjar包和dll文件. 2.jar包放到项目中WEB-INF\lib中,或者 mvn install:install-file -Dfile=D:\Users\qiuz ...

  2. jacob为word添加水印

    想请教一下大佬们 我是用jacob来为word添加水印,word添加上了 但是是所有页面dou都添加了,请问一下怎么只在word最后一页添加水印呢? 代码如下 package com.oa.commo ...

  3. java使用jacob操作word添加图片

    1.操作word需要的jacobjar包和dll文件.(请多多支持!) java使用jacob给word添加水印.这是给word添加水印,当业务需求在多页word文档中,某一页添加水印一样的盖章,这个 ...

  4. jacob根据word模板生成文

    最近的任务要求根据word模板生成检查报告,选择使用jacob,它对word的支持还可以,它是Java-COM中间件,通过这个组件可以调用COM组件和Win32程序库. 因此它在环境上有一定的局限性. ...

  5. java使用jacob操作word文档

    ava使用jacob操作word文档 java调用com组件操作word使用总结(jacob) 简单描述 在此处输入简单摘要 特别声明:使用java-com技术可以完成任何VBA可以完成的office ...

  6. word怎么添加水印 word添加水印后为什么看不见

    大家平时在用word编辑文档的时候有没有想过给自己的文档添加水印呢,比如一些不想外传的文档,可以给其添加"机密"字样的水印,提示阅读文档者不要外传.在word文档中添加水印其实很简 ...

  7. java为word添加水印,图片水印和文字水印

    java为word添加水印,图片水印和文字水印 jdk1.5及以上 所需jar包:Spire.Office.jar 或 Spire.Doc.jar jar包下载:https://www.e-icebl ...

  8. POI给WORD添加水印(亲测可用)

    POI给WORD添加水印(亲测可用) 最近要做电子合同,客户提出为了安全性要将合同中都添加水印,这个之前在网上看到过,貌似使用POI很好加.去网上一搜发现,清一色的只有一篇文章,并且这段代码是用不了的 ...

  9. JAVA使用jacob判断word附件是否加密

    java判断word附件是否加密和word转换pdf JAVA使用jacob判断word附件是否加密 JAVA使用jacob判断word附件是否加密 String overFile pdf输出路径 S ...

最新文章

  1. ST17H26 SDK中宏定义注意事项
  2. 软件项目管理0819:一页项目管理——风险,定性问题和其他评价指标
  3. PHP常用的数组函数
  4. 图的建立-邻接表表示(C语言)
  5. 34tomcat设置默认页面
  6. php数组的用法,PHP array_udiff_uassoc() 函数
  7. 【MEMORY ALIGN】内存对齐
  8. 【081】◀▶ HTML CSS 学习
  9. 精读《如何编译前端项目与组件》
  10. 2020过去了,我们想给那些病毒和劫持软件颁个奖……
  11. Java-控制台打印万年历代码
  12. Go语言版实现QQ扫码登陆
  13. 查询名字重复但不是相同的人的记录
  14. 获取苹果设备的UDID
  15. 一键式代购服务让,省时省力省心
  16. 一英寸芯片大小_Mac mini新款M1芯片详细参数配置规格 尺寸、重量等详细参数
  17. 开源物联网终端设备操作系统
  18. R5 7640H参数 锐龙R57640H性能怎么样相当于什么水平级别
  19. TCP/UDP 端口及部分端口的作用
  20. i9300一键root——工具百度一键root

热门文章

  1. 2022CPA财务与成本管理-管理会计专题【完结】
  2. SQLI DUMB SERIES-10
  3. 什么是kvo和lvc
  4. 微信小程序开发基础(02模板与配置)
  5. 网吧台式计算机配置,2017网吧电脑配置
  6. JS逆向基础知识个人总结
  7. nginx动静分离和资源隔离的网站搭建
  8. 房屋征收拆迁信息化管理平台
  9. 网易AI携手新东方布局“AI+教育”
  10. 去年中国水上交通安全形势稳定