一,引入pom
根据需求引入自己所需pom
org.apache.poi poi 4.1.1 org.apache.poi poi-ooxml 4.1.1 org.jxls jxls 2.6.0 ch.qos.logback logback-core org.jxls jxls-poi 1.2.0 fr.opensagres.xdocreport fr.opensagres.xdocreport.core 2.0.2 fr.opensagres.xdocreport fr.opensagres.xdocreport.document 2.0.2 fr.opensagres.xdocreport fr.opensagres.xdocreport.template 2.0.2 fr.opensagres.xdocreport fr.opensagres.xdocreport.document.docx 2.0.2 fr.opensagres.xdocreport fr.opensagres.xdocreport.template.freemarker 2.0.2 org.freemarker freemarker 2.3.30 com.itextpdf itext7-core 7.2.5 pom com.itextpdf itextpdf 5.5.6
二 docx文件配置域
docx文件:打开文件菜单,找到插入,点击文档部件,选择域,根据需求选择对应的域名,一般文字填充选择邮件合并:MERGEFIELD ${key},点击确定(记住这个key)
三代码实现docx文件填充
根据文件路径获取URL
根据url获取文件流
注册xdocreport实例
创建xdocreport上下文对象
填充文本变量 key为填充的取值key,
保存本地或浏览器下载
注意:如果文档配置了域但是变量没有设置值为null时会报错
四 pdf配置域
首先你要有一个工具可编辑pdf我用的 福昕高级PDF编辑器,找到菜单下面就是域可以填充圆,对钩和文本,单选,多选等
五 代码实现pdf文件填充
根据文件路径获取URL
填充数据直接用Map即可
构造pdf阅读器 构造输入输出器
构造pdfDocument实例
设置为a4纸张大小
替换参数
最后返回流或者byte[]