springboot 基于.ftl模板生成pdf文件

目录

Demo前置简述

生成pdf内容

项目结构

主要实现

api测试

完整代码地址


Demo前置简述

实现功能:用户个人信息测试数据加上ftl模板得到html字符串,然后根据html字符串生成pdf文件

主要maven依赖:freemarker和itextpdf

api测试工具:apifox

生成pdf内容

项目结构

简单springboot demo。其中,

User类为个人信息实体,Education类为个人学历学位实体,simhei.ttf文件为生成pdf文件时所需要的字体文件,user_personal.ftl为个人信息对应的模板。

主要实现

Controller层

Service层

红框中的方法都是UserService中的私有方法。

getUser():模拟数据库操作,返回一个有完整测试数据的User;

getHtmlContent():将User序列化再反序列化后的得到的Map模型作为参数传入,执行ftl模板,输出html字符串形式;

setFont():设置生成pdf文件使用字体(如果不设置,最终生成的pdf文件中至少中文不会显示)。

然后,使用itextpdf的HtmlConverter.convertToPdf()方法,

最终,生成的pdf写入进了response响应体中。

api测试

通过apifox工具,快捷请求/user/export接口,如图(点击右下角箭头处的下载,即可下载生成的pdf文件)

当然,因为设置了响应头Content-disposition(其中filename*=UTF-8''是为了解决解决火狐浏览器中下载文件的中文乱码问题),

所以浏览器直接请求也可自动下载。

完整代码地址

https://gitee.com/dlqx/springboot-code-book中的export-pdf文件夹。

猜你喜欢

转载自blog.csdn.net/qq_38058241/article/details/128084081