工作中,遇到这样的需求,在不经过前端的情况下,后台生成PDF,并且PDF带图带表。
首先声明下,本人是基于前人的基础,综合而成,纯手打,劳动不易,转载请注明,谢谢!
先说明下创作的思想,按模板生成Word文档,将Word装换成PDF,主要使用到freemarker,jfreechart,jacob下面就是具体的步骤
1.创建一个Word,该Word就是你最终PDF要求的样式,注意图片直接把截图粘上去就行,其他你需要填充的数据自己随便造一下就好,最好用相同的文字格式,不然后续怕混淆,例如不要用:你好ab123等,不怕麻烦的请无视
2.将Word另存为XML文件,格式选择Word 2003 XML文档(不要存最新版本)
3.修改Word文档中你需要替换的东西,文字部分直接用${属性名称},类似于EL表达式${name},表格部分需要将找到对应的表格部分的XML位置,一般为<w:tr >标签开头,将其他重复的表格的XML删除(表头不要删除),只留一个进行循环,在表格的<w:tr >标签开始前面加上<#list 列表对象 as 列表对象的别名>,输入的内容以${别名.对象属性},结尾部分</w:tr>加上</#list>,图的部分直接用类似文字形式代替,注意不能有任何空格,下面是几张例图
表格开头
表格的输入内容
表格结尾
图片(图片不能有空格)和文本输入
4.将修改后的文件的后缀名改为XX.ftl文件
5.将需要的数据生成Map形式,例如:map.put(“aa”,名称)map.put(“aa”,列表)
6.java后台调用模板,将这些数据填充进去,生成Word文档
7.将该Word文档生成PDF文件
下面附上相关的代码
<!-- word转pdf包,需要配合对应的dll文件ÿ