背景
因项目需求,需要将数据填充到客户提供的word模板中导出供打印使用,故写此说明。
依赖
<!--加入freemarker模版引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
制作模板
打开文档,填写模板内容
模板示例如下:
保存文件,另存为时选择类型
修改文件后缀名
将模板后缀名修改为ftl即可
将模板加入项目中,位置为templates/ftl/
编辑模板
图片处理
修改图片位置
注意: 对于图片,修改的位置主要有三个地方,第一个是声明的地方,第二个是图片实际地址,第三个是图片的base64。如果导出时有多张图片,则需要添加遍历,所以需要考虑。
base64位置
删除base64留下空白内容
因为图片可能有多张,所以修改如下:
备注:
- 红标1:图片下标,标识多张图片,声明图片中需要用到。注意文件格式,以及名字保持一致。
- 红标2:图片的base64内容,需要将图片的base64获取(在后端通过工具操作得到)。
声明图片的地方
注意:红标的地方,这是图片声明的id,会在word内容中引用。因为图片是多张,所以这里id也需要遍历生成。
备注:
- 红标1:后缀带Png或者其他内容,别不带,切记。
- 红标2:与步骤(1)的下标以及图片后缀一致。
图片实际地址
找到图片内容的位置,收缩该标签。
因为图片可能存在多张,所以循环w:r
修改<w:r>中的内容,更改引用id
单张图片处理
如果是单张图片,直接设置base64数据即可。找到头像的base64位置,删除base64数据,然后设置base64数据即可。其余保留不变。 注意:判断是否为空
表单处理
找到填写的内容位置,删除模板填写的内容,填写对应的表达式即可。注意:可能值为空,一定要加入判断,比如下面的姓名,否则会报错!
<#if studentInfo.name??>${ studentInfo.name }<#else></#if>
功能调用
超链接中的方法名可以随意定义
参数说明:
参数 | 类型 | 说明 |
---|