zoukankan      html  css  js  c++  java
  • jacob为word增加水印【转】

    直接代码

    package com.xfzx.test.POI.main;
    
    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.Dispatch;
    import com.jacob.com.Variant;
    import com.jacob.com.ComThread;
    
    public class WordPrintTest
    {
       public WordPrintTest()
       {
       }
       private static WordPrintTest instance;
       private Dispatch doc = null;
       private Dispatch activeWindow = null;
       private Dispatch docSelection = null;
       private Dispatch wrdDocs = null;
       private String fileName;
       private ActiveXComponent wrdCom;
       /**
        * 获取Word操作静态实例对象
        * 
        * @return 报表汇总业务操作
        */
       public final static synchronized WordPrintTest getInstance()
       {
          if (instance == null)
             instance = new WordPrintTest();
          return instance;
       }
       /**
        * 初始化Word对象
        * 
        * @return 是否初始化成功
        */
       public boolean initWordObj()
       {
          boolean retFlag = false;
          ComThread.InitSTA();// 初始化com的线程,非常重要!!使用结束后要调用 realease方法
          wrdCom = new ActiveXComponent("Word.Application");
          try
          {
             // 返回wrdCom.Documents的Dispatch
             wrdDocs = wrdCom.getProperty("Documents").toDispatch();
             wrdCom.setProperty("Visible", new Variant(true));
             retFlag = true;
          }
          catch (Exception e)
          {
             retFlag = false;
             e.printStackTrace();
          }
          return retFlag;
       }
       /**
        * 创建一个新的word文档
        * 
        */
       public void createNewDocument()
       {
          doc = Dispatch.call(wrdDocs, "Add").toDispatch();
          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();
          }
          doc = Dispatch.call(wrdDocs, "Open", docPath).toDispatch();
          docSelection = Dispatch.get(wrdCom, "Selection").toDispatch();
       }
       /**
        * 关闭当前word文档
        * 
        */
       public void closeDocument()
       {
          if (doc != null)
          {
             Dispatch.call(doc, "Save");
             Dispatch.call(doc, "Close", new Variant(0));
             doc = null;
          }
       }
       /**
        * 文档设置水印
        * 
        * @param waterMarkStr 水印字符串
        */
       public void setWaterMark(String waterMarkStr)
       {
          // 取得活动窗格对象
          Dispatch activePan = Dispatch.get(activeWindow, "ActivePane")
                .toDispatch();
          // 取得视窗对象
          Dispatch view = Dispatch.get(activePan, "View").toDispatch();
          //输入页眉内容
          Dispatch.put(view, "SeekView", new Variant(9));
          Dispatch headfooter = Dispatch.get(docSelection, "HeaderFooter")
                .toDispatch();
          //取得图形对象
          Dispatch shapes = Dispatch.get(headfooter, "Shapes").toDispatch();
          //给文档全部加上水印
          Dispatch selection = Dispatch.call(shapes, "AddTextEffect",
                new Variant(9), waterMarkStr, "宋体", new Variant(1),
                new Variant(false), new Variant(false), new Variant(0),
                new Variant(0)).toDispatch();
          Dispatch.call(selection, "Select");
          //设置水印参数
          Dispatch shapeRange = Dispatch.get(docSelection, "ShapeRange")
                .toDispatch();
          Dispatch.put(shapeRange, "Name", "PowerPlusWaterMarkObject1");
          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.5));
          Dispatch foreColor = Dispatch.get(fill,"ForeColor").toDispatch();
    //设置水印颜色
          Dispatch.put(foreColor, "RGB", new Variant(16711680));
          Dispatch.call(fill, "Solid");
          //设置水印旋转
          Dispatch.put(shapeRange, "Rotation", new Variant(315));
          Dispatch.put(shapeRange, "LockAspectRatio", new Boolean(true));
          Dispatch.put(shapeRange, "Height", new Variant(117.0709));
          Dispatch.put(shapeRange, "Width", new Variant(468.2835));
          Dispatch.put(shapeRange, "Left", new Variant(-999995));
          Dispatch.put(shapeRange, "Top", new Variant(-999995));
          Dispatch wrapFormat = Dispatch.get(shapeRange, "WrapFormat").toDispatch();
          //是否允许交叠
          Dispatch.put(wrapFormat, "AllowOverlap", new Variant(true));
          Dispatch.put(wrapFormat, "Side", new Variant(3));
          Dispatch.put(wrapFormat, "Type", new Variant(3));
          Dispatch.put(shapeRange, "RelativeHorizontalPosition", new Variant(0));
          Dispatch.put(shapeRange, "RelativeVerticalPosition", new Variant(0));
          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;
       }
       /**
        * 测试功能
        * 
        */
       public static void main(String[] argv)
       {
    	   WordPrintTest d = WordPrintTest.getInstance();
          try
          {
             if (d.initWordObj())
             {
                d.createNewDocument();
                d.getActiveWindow();
                d.setWaterMark("北京有限责任公司");
                // d.closeWordObj();
             }
             else
                System.out.println("初始化Word读写对象失败!");
          }
          catch (Exception e)
          {
             d.closeWordObj();
          }
       }
    }
    

      

  • 相关阅读:
    20162302预备作业02
    20162302预备作业01
    设计模式第二次作业
    设计模式第一次作业
    项目选题报告(团队)
    高级软件工程结对第二次作业
    高级软件工程团队第一次作业
    高级软件工程结对第一次作业
    高级软件工程第二次作业
    高级软件工程第一次作业--准备
  • 原文地址:https://www.cnblogs.com/hold/p/3010244.html
Copyright © 2011-2022 走看看