这个电子签章其实并不算真正意义上的电子签章,有一些取巧的成分在。在代码之前我先简单讲一下这个操作的原理,其实就是在你的word模板上事先传上一张图片,将样式、大小都设置好,然后在代码中将图片文件进行替换。注:替换的只是图片的内容,样式、大小还是依照模板中原来的设置。

上代码!
依赖

        <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.0</version></dependency>
InputStream is = this.getClass().getResourceAsStream("/demo.docx");XWPFDocument document = new XWPFDocument(is);try {URL url = new URL("图片地址");//线上地址,本地地址也可以,我这里就不列举了,不难HttpURLConnection conn = (HttpURLConnection)url.openConnection();//设置超时间为3秒conn.setConnectTimeout(3*1000);//防止屏蔽程序抓取而返回403错误conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");//得到输入流//这里的rId4可不是固定的,这个其实就是图片在word文件中的标识,下方会给出获取的方法document.getPackagePart().removeRelationship("rId4");//将图片插入wordString ind = document.addPictureData(conn.getInputStream(),XWPFDocument.PICTURE_TYPE_PNG);//替换图片document.getPackagePart().addRelationship(document.getPackagePart().getRelationship(ind).getTargetURI(), TargetMode.INTERNAL,XWPFRelation.IMAGES.getRelation(), "rId4");} catch (Exception e) {System.out.println("报错了");e.printStackTrace();}//导出到文件ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();document.write((OutputStream) byteArrayOutputStream);String filePath = "D:/uploads/demo/";String fileName = "demo";File file = new File(filePath + fileName + ".docx");if (!file.getParentFile().exists()) {file.getParentFile().mkdirs();}FileOutputStream outputStream = new FileOutputStream(filePath + fileName + ".docx");outputStream.write(byteArrayOutputStream.toByteArray());outputStream.flush();outputStream.close();

上文中的rId4的获取方法
首先准备一个word模板,复制一份出来,在副本word中插入一张图片,设置好需要的样式,然后将两个word的后缀改为zip,打开zip文件,在word文件夹下打开document.xml文件,对比两份xml文件,找到副本中多出来的部分,如下图

java使用poi操作word实现电子签章相关推荐

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

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

  2. java通过poi操作word创建表格

    效果图 pom.xml <dependency><groupId>org.apache.commons</groupId><artifactId>com ...

  3. JAVA中用POI操作word

    该文档方法不全面,请看另一篇 https://blog.csdn.net/weixin_43171019/article/details/104793714 需求描述:按照给定的word模板生成wor ...

  4. POI操作word填充数据,合并多个word为一个,遇到一些问题的解决

    POI操作word填充数据,合并多个word为一个,遇到一些问题的解决 最近搞一个向word模板中替换占位符 填充数据,然后将多个word合并在一起的方法.网上一搜有很多资料,现在在这儿对过程中遇到的 ...

  5. java poi 操作word遇到的问题

    java poi 操作word文本,图表,遇到的问题 直接上问题 模板字段匹配问题 图表问题 图表导出 问题:模板找不到对应图表 问题:数据填充后效果不达目标 图表中为零的数值去掉(!!!模板层面解决 ...

  6. java word apache poi 操作word模板。

    apache poi 操作word模板. 操作方式: 1.对于固定格,可以遍历格子然后替换其中指定的值例如在要替换的cell写入${example} 这样格式,遍历到之后替换. 2.对于需要增长的表格 ...

  7. java操作pdf制作电子签章

    #java操作pdf制作电子签章 ##电子签章简介 电子签章,与我们所使用的数字证书一样,是用来做为身份验证的一种手段,泛指所有以电子形式存在,依附在电子文件并与其逻辑关联,可用以辨识电子文件签署者身 ...

  8. 【JAVA - POI 合集】之 POI 操作word 图表,柱状图,折线图,雷达图,条形图 poi4.1.2

    1.前言 关于poi 操作word 的吐槽: 山路崎岖, 一言难尽啊!!! 原本项目中的poi 版本是3.17的版本,但是3.17对于在word 中操作图表是有问题的.所以对项目的jar 包进行了升级 ...

  9. java用poi导出word,Java使用POI导出Word文档的操作教程,poiword

    Java使用POI导出Word文档的操作教程,poiword 一.主要pom依赖 org.apache.poi poi-ooxml 3.16 二.需要导出word模板 三.相关导出代码 package ...

最新文章

  1. 用力和应变片计算弹性模量_第4章 力学量传感器.pptx
  2. 无风险对冲组合的设计
  3. 024 Android 自定义样式对话框(AlertDialog)
  4. Knowledge Graph Alignment Network with Gated Multi-Hop Neighborhood Aggregation-学习笔记
  5. 【实战Java高并发程序设计6】挑战无锁算法
  6. 以项目管理的理念制作高质量的标书
  7. Android studio 录屏并制作gif
  8. ktv点歌系统服务器怎样连接,ktv设备与显示屏怎么连接
  9. Zookeeper之ZAB协议详解
  10. FPGA和外围接口-第一章 爱上FPGA(1.4 FPGA开源网站和论坛))
  11. go 当前时间、时间戳和时间字符串及相互转换
  12. 教你学会网易云JS逆向,爬来的歌打包发给女友邮箱可好?
  13. 为什么会有OPTIONS请求
  14. 为您打造别样的海景婚纱!
  15. Global Illumination_Voxel Global Illumintaion (VXGI)
  16. ZYNQ的PL控制PS的DDR
  17. 新电脑使用老微软账号登录就显示office2016已激活,但是新电脑的office2021未兑换
  18. Word文档在线怎么进行翻译
  19. 康海时代nc系列串口服务器,康海时代NC604系列串口服务器.pdf
  20. 命运战歌电脑版模拟器怎么玩

热门文章

  1. Scrapy框架原理学习
  2. 网络电台,争夺耳朵的战争
  3. 人工智能生态环境预测_人工智能在生态领域的应用研究
  4. 自动写代码?Copilot尝鲜及其奇技淫巧
  5. FireBlue QN9020 QN9021 QN902x 例程 按键 多次触发
  6. 微信公众号-测试号-网页授权
  7. python 正态分布_终于搞清楚正态分布、指数分布到底是个啥了
  8. html是前段还是后端,什么是前端?前端与后端的区别?
  9. 用友宣布进入3.0时期,全面提供“企业互联网服务”
  10. 语音翻译中文并不难,我来推荐语音翻译软件哪个好用