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;易用性

好了,需要和技術選擇時遇到的問題都介紹完了,接下來我們將一個難點一個難點去看看是怎麼實現的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章