Java + flying-saucer + iText + Freemarker 导出PDF日报和周报

2018-06-14
  • 1636
  • 0

由于iText自身解析器对html中的一些标签和css支持不够好,没有办法识别,网上查找了很多资料最后用了基于iText开源flying-saucer包。对css解析做了很好的支持同时对中文做了处理,导出的PDF中文不会再是乱码。项目中引用了对spring-boot-starter-freemarker、中文支持包itext-asian、支持css样式渲染包flying-saucer-pdf-itext5包进行开发。能够同时对css,字体font、图片img进行解析渲染。可以加入字体包和自定义css,对html内容进行完美解析。把每天生成的日报的地址放入延时队列,第二天早上通过邮件发送给客户。

发送邮件用的搜狐的sendcloud平台,通过参数type获取不同的模板进行发送,在sendcloud中配置不同的模板,在模板中可以设置%name%替换变量。在发送时模板根据参数会进行相应替换。利用elastic-job进行任务调度,定时任务会通过接口查询elasticsearch中的数据生成用户每天的日报PDF,把生成的数据放入延时队列,在到达指定时间时延时队列会自动发调用发送邮件接口,进行发送。通过RabbitMQ定义延时队列。当队列接收的发送过来的数据时调用发送邮件接口,把生成的日报发送给客户邮箱。日报模板中显示租户每个项目中关键词所监测到的舆情信息。其中显示总舆情信息数和敏感信息条数。把监测到负面的敏感词进行飘红显示。周报的生成是把7天的日报数据打包成PDF压缩文件发送给客户。