java使用jacob操作word添加图片
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添加图片相关推荐
- 总结java关于jacob操作word这几天遇到的问题!
由于这几天的客户需求使用到了java关于jacob操作word的问题,下面对这几天遇到的问题进行一下总结: 本机第一次使用jacob的时候,本机装的WPS接下来一路畅通,直到最后完成word的导出功能 ...
- java使用jacob操作word文档
ava使用jacob操作word文档 java调用com组件操作word使用总结(jacob) 简单描述 在此处输入简单摘要 特别声明:使用java-com技术可以完成任何VBA可以完成的office ...
- java里怎么给excel加框线,使用Jacob操作word 添加表格时 如何给表格添加边框线
/** *//** * 创建表格 * * @param pos 位置 * @param cols 列数 * @param rows 行数 */ public void createTable(S ...
- java使用poi操作word模板,插入图片、段落、表格
java使用poi操作word插入图片.段落.表格 其他链接 准备工作 创建word模板.docx文件 编写模板格式.xml文件 java上手poi maven依赖 使用到的包 具体应用 对应封装方法 ...
- 解决 Java poi 3.8 等版本 操作 word 插入 图片 不成功的问题
解决 Java poi 3.8等版本操作word插入图片不成功的问题 问题: 最近有一个需求是将Excel中的数据转换到word中,其中包括了文字和图片, 在使用 poi 3.8 向word中写入图片 ...
- java 使用jacob实现word、excle、ppt、图片转pdf
java 使用jacob实现word.excle.ppt.图片转pdf IDEA Maven 微服务项目示例 示例: 步骤: 1.jarcob jar包.插件下载 SaveAsPDFandXPS 下载 ...
- jacob操作word和excel
jacob操作word和excel jacob的官方文档:http://danadler.com/jacob/ 微软的javasdk文档:http://f2.grp.yahoofs.com/v1/II ...
- jacob操作word excel 将word excel转换成网页形式
jacob操作word excel(来自http://sinye.iteye.com/blog/588050) 项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理 ...
- Java程序中操作Word表格
本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...
最新文章
- Maven build标签
- BCS和ECCS等合并系统简单对比
- iOS中本地化字符串
- 深度学习目标检测之 YOLO v1
- 今天的俩个一齐说的即时通讯
- 模仿$.Callbacks实现
- psql json操作符合函数
- javascript在IE和Firefox中兼容性问题
- DateUtils解析
- python读取xps文件_Python操作PDF-文本和图片提取(使用PyPDF2和PyMuPDF)
- 在python中不论类的名字是什么构造方法的名字_2020年超星尔雅最新穿T恤听古典音乐答案搜题公众号...
- 网络信息安全之纵深防御
- 《价值投资 从看懂财务报表开始》 读书笔记
- 前端基础知识--Document的常用属性和常用函数
- Unable to boot device in current state: Creating
- 【微信开发】定制消息推送
- MTL TXN REQUEST HEADERS HEADER STATUS or MTL TXN REQUEST LIN
- numpy 函数里面的axis参数的含义
- flickr slack_Slack&Flickr的创始人如何将巨大的失败变成十亿美元的公司
- 华为、荣耀笔记本如何开启或关闭虚拟化技术(Virtual Technology)
热门文章
- WPS Office 2020 Mac专业办公套件
- 计算机主板启动显示器黑屏,电脑开机正常启动,但显示器无信号然后黑屏怎么回事?一招解决!...
- C语言异或加密(XOR encryption)
- jQuery Mobile中文手册:开发入门
- 免费送!!!CSDN会员月卡!
- 苹果充电显示不支持此配件_充电提示“不支持此配件”,iPhone手机这抓狂的故障,大神来支招...
- 开机白屏解决方案(无硬件问题)
- 博客园添加Live2d看板娘
- 你知道程序都是怎么处理时区问题的么?
- 三谈大数据之足球盘口赔率水位分析思路及其实现利器