一、需求说明:根据业务需要,需要在服务器端生成可动态配置的pdf文档,方便数据可视化查看。二、解决方案:iText+FreeMarker+JFreeChart生成可动态配置的PDF文档iText有很强大的PDF处理能力,但是样式和排版不好控
一、需求说明:
根据业务需要,需要在服务器端生成可动态配置的pdf文档,方便数据可视化查看。
二、解决方案:
iText+FreeMarker+JFreeChart生成可动态配置的PDF文档
iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档,数据的动态渲染很麻烦。
FreeMarker能配置动态的html模板,正好解决了样式、动态渲染和排版问题。
JFreeChart有这方便的画图api,能画出简单的折线、柱状和饼图,基本能满足需要。
三、实现功能:
能动态配置PDF文档内容
能动态配置中文字体显示
设置自定义的页眉页脚信息
能动态生成业务图片
完成PDF的分页和图片的嵌入
四、主要代码结构说明:
component包:PDF生成的组件 对外提供的是PDFKit工具类和HeaderFooterBuilder接口,其中PDFKit负责PDF的生成,HeaderFooterBuilder负责自定义页眉页脚信息。
builder包:负责PDF模板之外的额外信息填写,这里主要是页眉页脚的定制。
chart包:JFreeChart的画图工具包,目前只有一个线形图。
test包:测试工具类
util包:FreeMarker等工具类。
五、关键代码说明:
模板配置
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "Http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Style-Type" content="text/CSS"/> <title></title> <style type="text/css"> body { font-family: pingfang sc light; } .center{ text-align: center; width: 100%; } </style></head><body><!--第一页开始--><div class="page" > <div class="center"><p>${templateName}</p></div> <div><p>iText官网:${ITEXTUrl}</p></div> <div><p>FreeMarker官网:${freeMarkerUrl}</p></div> <div><p>JFreeChart教程:${JFreeChartUrl}</p></div> <div>列表值:</div> <div> <#list scores as item> <div><p>${item}</p></div> </#list> </div></div><!--第一页结束--><!---分页标记--><span ></span><!--第二页开始--><div class="page"> <div>第二页开始了</div> <!--外部链接--> <p>百度图标</p> <div> <img src="${imageUrl}" alt="百度图标" width="270" height="129"/> </div> <!--动态生成的图片--> <p>气温变化对比图</p> <div> <img src="${picUrl}" alt="我的图片" width="500" height="270"/> </div></div><!--第二页结束--></body></html>
--结束END--
本文标题: java根据模板动态生成PDF实例
本文链接: https://lsjlt.com/news/226633.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0