项目中用到生成pdf征信报告的需求,最近尝试了好多方法
1.传统的方法,使用pdfbox itext方法,生成的pdf不仅难看,而且不容易控制
2.freemarker技术,首先创建个word模板,转xml模型,通过freemarker技术填充数据到xml模型中,生成word文件,然后转pdf文件。
这种方法,适合于表格填充数据,我就不贴代码了
3.wkhtmltopdf技术,这种html直接转pdf的方法,因为我用java来开发的,好多参数不管用,封面控制,页头,页尾不好控制
4.python pdfkit技术。最后我用的这种方法,因为我不是很懂python开发,既然用到了这个技术,我花了一天来研究,能写些简单的脚本语言就可以了。
总是思路,首先html预览数据样式,可以加入一些echarts效果图等,然后java调用bat批处理文件,把当前html转成pdf文件,最后html页面下载并预览本地磁盘文件。
这里碰到个很头疼的问题,java直接调用python是可以的,也可以传入参数,但是python脚本中加入了页头,页尾和封面等等 主要是import pdfkit 不能直接调用,所以最后写了个批处理文件来启动这个python脚本。很无语。
下面贴代码
java调用bat文件出
python脚本
当然由于不能直接调用pthon传入参数 所有这里使用的是 pdfkit.from_url方法,这里有个问题,如果你的html数据是动态渲染的,请求时间不能太长,否则转成的pdf是空的。
然后就是页面下载并预览本地磁盘的pdf文件了