背景:跟着我的步骤一步一步,最后一定会成功!!
首先生成pdf有很多种方式:
- iText,生成PDF文档,还支持将XML、Html文件转化为PDF文件;
- Apache PDFBox,生成、合并PDF文档;
- docx4j,生成docx、pptx、xlsx文档,支持转换为PDF格式。
比较:
- iText开源协议为AGPL,而其他两个框架协议均为Apache License v2.0。需要用画笔去花模板,很繁琐!
- Apache PDFBox,生成、合并PDF文档;
- docx4j,生成docx、pptx、xlsx文档,支持转换为PDF格式。
本文使用最后一种,思路如下图:
步骤
1.首先将你要生成的pdf,用worl画出来,比如你需要特定结构的pdf,你没办法做到,但是一个wold你可以通过编辑,得到你想要的模板 。如下:(你想要替换的内容换成${arg0!""},就是用将来你需要替换的数据暂时用变量表示出来,后续只要替换变量的值即可!而模板本身不变)
2.其次将word的字体换成宋体(通用),文件另存为xml格式文件如下:
3.将文件改名,以.ftl形式结尾(利用freemarker,所以改成freemarker文件形式)
4.读取ftl文件,将其转化成xml字符串。读取xml字符串,将其转换成word,读取word,利用dom4j将其转换成你想要的模式的pdf
@SuppressWarnings({ "unchecked", "rawtypes" })
private Map createPdf(List<Loan> loanList) {
Map fileMap = new HashMap();
for (Loan loan : loanList) {
// 创建数据
String bankParentName =