刚接到了一个需求,生成一个pdf,一开始以为挺简单的,通过模板生成嘛,我也发过相应的文章,根据模板直接生成pdf,响应到前端或者根据模板生成pdf,直接指定下载位置,这两种方案都可以,不过这篇文章主要讲的生成的pdf是既有模板填充还需要自己动态生成表格,包括还需要通过java去生成Echarts图形,通过java后台生成Echarts图形我专门写了一篇文章介绍,java后台生成统计图,这个生成统计图的文章中有两种生成统计图的方式,可以自己选择。
本篇文章的重点还是在讲通过java生成pdf,其实如果是单纯的模板填充挺简单的,但是又要填充模板还要动态生成表格就比较麻烦了,因为如果在模板中画表格的框去生成的话,超过模板框的位置就会隐藏,我刚接到需求的时候也是有点难受,在网上也是找了大量的资料,研究了半天,发现好多都是你粘贴我,我粘贴你,最终我也算是搞成了,把这些整合一下,让大家用的好用一些,废话不多说,直接上代码!
这里说一下啊,如果需要生成echarts图片,先去看我的生成echarts图片文章,不然这个搞不了。
最近很多人都找我要模板链接,我把他放到网盘了,需要的可以去下载https://pan.baidu.com/s/1YJZtLdiySxUry4h2Gd1V7g
提取码:j1l5,不想从网盘下的也可以从的我csdn资源里面下载,资源里面我也放了一份,0积分下载的,大家自取就好。
首先先引入咱们需要的pom依赖,我这里只粘贴pdf的吧,和hutool经常用我就不粘贴了。
我这个没有搞页眉,只搞了页脚,设置页眉/页脚和的类我会在最后粘贴出来,因为这几个案例用的都是一个配置类。
实体类
生成pdf代码
生成结果示例
这就是结果!!!!基本上还可以
实体类都是一样的没有变。
生成pdf代码
这是第二种生成pdf的方法,生成的结果不一样,因为模板第一页没有太多的东西,所以会空出来很多空白,这个时候生成动态表格如果重开一页比较浪费,而且客户看着也不好看,所以我封装了一下生成间隙的方法,直接用间隙把模板内容和表格隔开即可,看一下效果。
生成结果示例
可以看到,我们在代码中并没有新开一页,只是加了一个间隙,就可以保证动态生成的表格和模板在一个页面,就此,基本上就算完成了。
四、生成pdf,多页模板方式
2023-03-27更新,各位粉丝本人在用过一段时间pdf生成以后,突然有了多页模板图片和描述的需求,需要多页画模板域,因此呢有了下面的代码,其中还要感谢苏诺Alina兄弟。
生成结果示例
可以看到第二页我也是通过模板的图片文本域生成图片,我们可以通过这种方法来进行多页模板生成。
好了这就是生成pdf的代码了,controller层我就不粘出来了自己搞一下吧,希望可以帮助各位有需要的人,如果帮助到你了就帮忙点个赞,关注一下,我会不定时更新一些自己解决过的业务,希望可以帮助大家!!!
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/15371.html