最近公司有个需求,需要后端生成一个PDF,并且里面的数据是动态的,还有图表,照片,比较操蛋,心里剧吐槽,但是工作还是要做的。经过技术调研决定使用openhtmltopdf,上网一搜,国内没有人写示例dome,没有博客写怎么用。好吧,自己来
整个工作流程是 让前段小哥,给我来个示例页面,再使用freemark语法搞出模板,照片上传到服务器,模板里通过绝对路径去加载,柱状图通过Jfreechart生成一张图片,通过位置加载进模板,通过freemark生成html,再通过openhtmltoPdf生成pdf,大功告成。
做一下记录,下面是参考的各种文章
freemark语法:https://www.cnblogs.com/JealousGirl/p/6914122.html
Jfreechart属性设置:http://www.360doc.com/content/14/0605/14/17602217_383871527.shtml
https://www.cnblogs.com/zhongshiqiang/p/5868710.html
注意:Jfreechart 默认生成的是3D的 贼丑 需要通过配置修改
BarRenderer renderer = new BarRenderer();//生成的图表是2D的 平面的
BarRenderer3D renderer = new BarRenderer3D();//生成的是3D的 立体的 丑的一笔
renderer.setBarPainter(new StandardBarPainter());//柱子是2D的
renderer.setSeriesPaint(0,new Color(94,134,183)); 设置 柱子颜色 renderer.setSeriesPaint(1,new Color(149,185,218));
//设置柱子值
ds.addValue(100, "1", "苹果"); // ds.addValue(100, "2", "苹果");// 这两行代表 X轴 苹果刻度 对应两根柱子 和上方setSeriesPaint属性配合 可以把两根柱子改成不同颜色 ds.addValue(200, "1", "梨子"); ds.addValue(200, "2", "梨子");
……………………
效果如下
openhtmltopdf 简单使用:https://blog.csdn.net/hgx2014/article/details/88849482