java导出pdf报告之二:各项需求技术分析

在上一篇博客中我们看到了这份报告中的部分需求,这篇我们来分析一下以上各个需求的技术难点和选择。
以下是我拿到需求后从技术角度考虑到的一些问题:

  1. 如何动态生成相应的PDF
  2. 饼状图和柱状图使用什么技术来生成
  3. 饼状图、柱状图和表格如何动态的插入到PDF文档里
  4. 需求中图片处理的地方,如何动态生成相应的图片
  5. 表格里不同颜色的圆点如果放入到表格里
  6. 如何将word转成pdf

以下我来一一介绍下我的思路:
1、如何动态生成相应的PDF
首先我想到的是使用PDF模版直接生成,使用Adobe Acrobat DC做模版。但之前在做项目的时候,发现动态生成表格数据不是很方便,同时没有太多时间去研究,就放弃了这种方式。
然后就是之前使用过freemarker,就考虑先根据word模版生成word文件,然后再将word转成PDF。
在整个探索整个技术可行形式,在网上发现了一个新的开源项目POI-TL,然后发现了其使用起来比freemarker要方便很多,之后就果断选择了使用poi-tl来生成word

2、饼状图、柱状图使用什么技术来生成
这个选型相对简单一点,当时就是百度之后,直接选择了jfreechart

3、饼状图、柱状图和表格如何动态的插入到PDF文档里
这项的思考其实是贯穿于第一项技术选择的,也是选择poi-tl的一个很重要的原因,添加图片和表格特别的方便。不过后边也是遇到了一下问题,这个我们在之后的文章里再做介绍

4、需求中图片处理的地方,如何动态生成相应的图片
这里也是在做技术分析时比较纠结的一点,后来想到可以用图片拼接的方式,把绿色圆点画到长的图片上,然后就果断采取了这种方式,具体实现我们在后边的文章里介绍

5、表格里不同颜色的圆点如果放入到表格里
这里一开始想着把几个颜色的小圆点做成图片,根据规则判断使用什么颜色的图片,然后插入到表格里,但这里遇到了一个问题就是poi-tl当前版本不支持在动态表格里插入图片,不过也是做了相应的尝试,扩展了poi-tl中表格处理的方法,但是测试时发现图片虽然插进去了,但图片上方总会生成一个空行,导致表格宽度加宽,很是不爽。
接下来偶然一次机会发现了poi本身是支持插入特殊符号的,然后就果断使用了直接将圆点图片换成了圆点的特殊字符。这里的具体实现我们同样在后边的文章里去介绍

6、如何将word转成pdf
这个网上也搜到了好多解决方案:JobConverter + OpenOffice 、SaveAsPDFandXPS + jacob、xdocreport、LiberOffice等等。最后选择了xdocreport,主要是几方面的原因:服务器环境linux,OpenOffice和jacob只能在windows环境下使用,而且需要安装office; licence;易用性

好了,需要和技术选择时遇到的问题都介绍完了,接下来我们将一个难点一个难点去看看是怎么实现的

猜你喜欢

转载自blog.csdn.net/wzl19870309/article/details/103434232