springboot中使用freemarker生成word文档并打包成zip下载(简历)
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:27
一、设计出的简历模板图以及给的简历小图标切图

二、按照简历模板图新建简历word文件 :${字段名},同时将图片插入到word中,并将建好的word文件另存为xml文件;

三、直接将该xml文件重命名为.ftl文件,并用编辑器(EditPlus)打开并修改
说明:字段取值用Map来存取;
${pictureAddrees!"...."} pictureAddress中存的是图片转换后的64位码,!(感叹号)表示当字段值为空时取后面的默认图片的64位码;
集合数据循环取值形式如图所示。


四、项目pom文件中加入freemarker的依赖,将ftl文件放到resource目录下

五、工具类代码如下:
1、createWord(Map dataMap, String templateName, String fileFullPath) ==> 根据传入的数据、模板文件名、生成文件全路径名(带.doc)来创建word文件到磁盘;
2、createZip(String zipfullPath,String[] fileFullPaths) ==> 用流的方式根据生成的文件路径名(带.zip)、要打包的word文件全路径名数组(带.doc)来打包zip文件到磁盘;
3、createZip(String zipfullPath,String fileFullPath,boolean isKeepDirStr) ==> 用流的方式生成zip文件,调用compressZip()方法
compressZip(InputStream inputStream,ZipOutputStream zip, File sourceFile, String fileName,boolean isKeepDirStr) ==> 递归压缩文件夹,被调用
注意:当生成的zip文件为带文件夹目录级别时,调用3方法;
当生成的zip文件为纯文件时,调用2方法。
4、downLoadFile(String fullPath, HttpServletResponse response) ==> 用流的方式下载生成的word文件、zip文件或其他文件;
5、createFromUrl(String urlAddress,String fileFullPath) ==> 从网络地址下载文件到磁盘;
如插入简历的图片需要从网络地址下载到磁盘,再生成base64位码,否则会失败;
个人的一些视频信息地址、附件地址也需要从网络地址下载到磁盘,保存后再一起和简历word打包成zip文件下载。
6、getImageBase(String urlAddress,String pathAddress) ==> 生成图片的Base64位码。

六、调用处代码如下
逻辑:循环开始 ==>
取出简历数据封装到Map中 ==> 生成word文件到磁盘 ==> 下载附件等到磁盘 ==> 将word文件、下载好的文件 的全路径名放入到路径数组中
==> 循环中....
循环结束 ==>
根据路径数组打包生成zip到磁盘 ==>
下载zip文件 ==>
删除原文件和zip文件,下载完毕 ==>


七、从测试环境下载后的简历如下


八、过程中出现的问题:
1、模板文件路径找不到 ==> 相对路径问题,检查后解决;
2、空值字段报错或显示错误 ==> 工具类代码中已解决;或修改.ftl文件中,字段接受时设置默认值;
3、多个工作经历只显示一个 ==> 数据传值有误,检查后解决;
4、头像不显示 ==> 生成的图片的base64位码有误,工具类代码中已解决;
5、doc文件不生成 ==> 模板文件字段值有问题,检查后解决;
6、下载速度问题 ==> 目前限制只能一次下载20个。
- 上一篇: springboot重复提交后端处理
- 下一篇: springboot中redis取缓存类型转换异常
相关文章
-
springboot重复提交后端处理
springboot重复提交后端处理
- 互联网
- 2026年04月04日
-
springboot自动配置原理以及spring.factories文件的作用详解
springboot自动配置原理以及spring.factories文件的作用详解
- 互联网
- 2026年04月04日
-
SpringCloud的入门学习之Eureka(Eureka的单节点)
SpringCloud的入门学习之Eureka(Eureka的单节点)
- 互联网
- 2026年04月04日
-
springboot中redis取缓存类型转换异常
springboot中redis取缓存类型转换异常
- 互联网
- 2026年04月04日
-
springboot支持多少访问量
springboot支持多少访问量
- 互联网
- 2026年04月04日
-
springboot之websocket,STOMP协议
springboot之websocket,STOMP协议
- 互联网
- 2026年04月04日






