1、操作word需要的jacobjar包和dll文件。(请多多支持!)

java使用jacob给word添加水印。这是给word添加水印,当业务需求在多页word文档中,某一页添加水印一样的盖章,这个链接就没有办法了。

2、在word中需要盖章的位置添加个书签。

3、用jacob给书签替换成图片

/*** Created by qiuzhb on 2018/6/11.*/public class Test0611 {private Dispatch activeWindow = null;public static void main(String []args) {Test0611 test0611 = new Test0611();test0611.insertPicByjacob("D:\\Users\\qiuzhb\\Downloads\\20180529113238\\SW_20180529113240_2.doc","D:\\Users\\qiuzhb\\Downloads\\20180529113238\\SW_20180529113240_3.doc","picture","C:\\gajyz.GIF");}public void insertImageAtBookmark(String bookmarkName, String imagePath, int width, int height){//Dispatch dispatch = getBookmark(bookmarkName);Dispatch dispatch = Dispatch.get(this.activeWindow, "ActivePane").toDispatch();if(dispatch != null){Dispatch picture = Dispatch.call(Dispatch.get(dispatch, "InLineShapes").toDispatch(), "AddPicture", imagePath).toDispatch();Dispatch.call(picture, "Select");Dispatch.put(picture, "Width", new Variant(width));Dispatch.put(picture, "Height", new Variant(height));Dispatch ShapeRange = Dispatch.call(picture, "ConvertToShape").toDispatch(); // 取得图片区域Dispatch WrapFormat = Dispatch.get(ShapeRange, "WrapFormat").toDispatch(); // 取得图片的格式对象Dispatch.put(WrapFormat, "Type", 5); // 设置环绕格式(0 - 7)下面是参数说明//  wdWrapInline 7 将形状嵌入到文字中。// wdWrapNone 3 将形状放在文字前面。请参阅 wdWrapFront 。//  wdWrapSquare 0 使文字环绕形状。行在形状的另一侧延续。//    wdWrapThrough 2 使文字环绕形状。//  wdWrapTight 1 使文字紧密地环绕形状。// wdWrapTopBottom 4 将文字放在形状的上方和下方。//  wdWrapBehind 5 将形状放在文字后面。// wdWrapFront 6 将形状放在文字前面。Dispatch.call(picture, "Select");Dispatch.put(picture, "Left", new Variant(350));Dispatch.put(picture, "Top", new Variant(350));}}public void insertPicByjacob(String templatePath, String targetPath, String word, String imagePath) {System.out.println("启动word...");ActiveXComponent app = null;Dispatch doc = null;// 模板的路径String openPath = templatePath;// 要保存的文件的路径String toFileName = targetPath;Dispatch docs = null;if (app == null || app.m_pDispatch == 0) {app = new ActiveXComponent("Word.Application");app.setProperty("Visible", new Variant(false));app.setProperty("DisplayAlerts", new Variant(false));}if (docs == null) {// 获得documents对象docs = app.getProperty("Documents").toDispatch();}doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[] { openPath, new Variant(false), new Variant(true) }, new int[1]).toDispatch();System.out.println("打开文档..." + openPath);Dispatch selection = app.getProperty("Selection").toDispatch();Dispatch find = Dispatch.call(selection, "Find").toDispatch();// 获得Find组件Dispatch.put(find, "Text", word); // 查找字符串Dispatch.put(find, "MatchWholeWord", "True"); // 全字匹配boolean bl = Dispatch.call(find, "Execute").getBoolean(); // 执行查询Dispatch activeDocument = app.getProperty("ActiveDocument").toDispatch();Dispatch bookMarks = app.call(activeDocument, "Bookmarks").toDispatch();boolean bookMarkExist = app.call(bookMarks, "Exists", word).toBoolean();if (bookMarkExist) {Dispatch picture = Dispatch.call(Dispatch.get(selection, "InLineShapes").toDispatch(), "AddPicture", imagePath).toDispatch();Dispatch.call(picture, "Select"); // 选中图片Dispatch.put(picture, "Width", new Variant(100)); // 图片的宽度Dispatch.put(picture, "Height", new Variant(100)); // 图片的高度Dispatch ShapeRange = Dispatch.call(picture, "ConvertToShape").toDispatch(); // 取得图片区域Dispatch WrapFormat = Dispatch.get(ShapeRange, "WrapFormat").toDispatch(); // 取得图片的格式对象Dispatch.put(WrapFormat, "Type", 5);System.out.println(bookMarkExist);}// 保存文件//new variant() 参数 0Doc 12、16Docx 17pdfDispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { targetPath, new Variant(12) }, new int[1]);Dispatch.call((Dispatch) doc, "Close", new Variant(false));System.out.println("关闭文档");if (app != null)app.invoke("Quit", new Variant[] {});}}

4、如果你和我一样,是先利用ftl模板创建word,然后再插入图片,记得创建word后让主线程睡一会,不然创建完word立马插入图片会报错,好像是写入word的io还没有结束。

ps:菜鸡写博客,有问题请指正!!!

java使用jacob操作word添加图片相关推荐

  1. 总结java关于jacob操作word这几天遇到的问题!

    由于这几天的客户需求使用到了java关于jacob操作word的问题,下面对这几天遇到的问题进行一下总结: 本机第一次使用jacob的时候,本机装的WPS接下来一路畅通,直到最后完成word的导出功能 ...

  2. java使用jacob操作word文档

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

  3. java里怎么给excel加框线,使用Jacob操作word 添加表格时 如何给表格添加边框线

    /** *//** * 创建表格 * * @param pos    位置 * @param cols 列数 * @param rows 行数 */ public void createTable(S ...

  4. java使用poi操作word模板,插入图片、段落、表格

    java使用poi操作word插入图片.段落.表格 其他链接 准备工作 创建word模板.docx文件 编写模板格式.xml文件 java上手poi maven依赖 使用到的包 具体应用 对应封装方法 ...

  5. 解决 Java poi 3.8 等版本 操作 word 插入 图片 不成功的问题

    解决 Java poi 3.8等版本操作word插入图片不成功的问题 问题: 最近有一个需求是将Excel中的数据转换到word中,其中包括了文字和图片, 在使用 poi 3.8 向word中写入图片 ...

  6. java 使用jacob实现word、excle、ppt、图片转pdf

    java 使用jacob实现word.excle.ppt.图片转pdf IDEA Maven 微服务项目示例 示例: 步骤: 1.jarcob jar包.插件下载 SaveAsPDFandXPS 下载 ...

  7. jacob操作word和excel

    jacob操作word和excel jacob的官方文档:http://danadler.com/jacob/ 微软的javasdk文档:http://f2.grp.yahoofs.com/v1/II ...

  8. jacob操作word excel 将word excel转换成网页形式

    jacob操作word excel(来自http://sinye.iteye.com/blog/588050) 项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理 ...

  9. Java程序中操作Word表格

    本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...

最新文章

  1. Maven build标签
  2. BCS和ECCS等合并系统简单对比
  3. iOS中本地化字符串
  4. 深度学习目标检测之 YOLO v1
  5. 今天的俩个一齐说的即时通讯
  6. 模仿$.Callbacks实现
  7. psql json操作符合函数
  8. javascript在IE和Firefox中兼容性问题
  9. DateUtils解析
  10. python读取xps文件_Python操作PDF-文本和图片提取(使用PyPDF2和PyMuPDF)
  11. 在python中不论类的名字是什么构造方法的名字_2020年超星尔雅最新穿T恤听古典音乐答案搜题公众号...
  12. 网络信息安全之纵深防御
  13. 《价值投资 从看懂财务报表开始》 读书笔记
  14. 前端基础知识--Document的常用属性和常用函数
  15. Unable to boot device in current state: Creating
  16. 【微信开发】定制消息推送
  17. MTL TXN REQUEST HEADERS HEADER STATUS or MTL TXN REQUEST LIN
  18. numpy 函数里面的axis参数的含义
  19. flickr slack_Slack&Flickr的创始人如何将巨大的失败变成十亿美元的公司
  20. 华为、荣耀笔记本如何开启或关闭虚拟化技术(Virtual Technology)

热门文章

  1. WPS Office 2020 Mac专业办公套件
  2. 计算机主板启动显示器黑屏,电脑开机正常启动,但显示器无信号然后黑屏怎么回事?一招解决!...
  3. C语言异或加密(XOR encryption)
  4. jQuery Mobile中文手册:开发入门
  5. 免费送!!!CSDN会员月卡!
  6. 苹果充电显示不支持此配件_充电提示“不支持此配件”,iPhone手机这抓狂的故障,大神来支招...
  7. 开机白屏解决方案(无硬件问题)
  8. 博客园添加Live2d看板娘
  9. 你知道程序都是怎么处理时区问题的么?
  10. 三谈大数据之足球盘口赔率水位分析思路及其实现利器