天天看點

記錄最近poi實作word模闆編輯的經過(一)

一、概述

#PDF轉換word#

記錄最近poi實作word模闆編輯的經過(一)

記錄最近今天實作word模闆編輯和pdf轉換的經過

最近在幫助同僚整理word模闆的編輯和通過word生成pdf。在這個過程中遇到了很多的問題,也從網上查詢了很多解決方案,但是不得不說,很多網上的解決方案,很多都是值得考量的。

目前替換模闆,生成word的方法,實驗成功的一共有大緻三種spire,poi,Aspose.Words for Java.相比而言,spire和Aspose.Words for Java都是專業的,缺點就是做成了産品,是收費的,免費版本都有限制。spire收費版本貌似5000左右,Aspose沒有登入,沒有看到收費的價格,如果有知道的小夥伴,友善留言評論下。

剛才又發現了一個比較好的線索Poi-tl

方案 移植性 功能性 易用性
Poi-tl Java跨平台 Word模闆引擎,基于Apache POI,提供更友好的API 低代碼,準備文檔模闆和資料即可
Apache POI Apache項目,封裝了常見的文檔操作,也可以操作底層XML結構 文檔不全,這裡有一個教程:
Freemarker XML跨平台 僅支援文本,很大的局限性 不推薦,XML結構的代碼幾乎無法維護
OpenOffice 部署OpenOffice,移植性較差 - 需要了解OpenOffice的API
HTML浏覽器導出 依賴浏覽器的實作,移植性較差 HTML不能很好的相容Word的格式,樣式糟糕
Jacob、winlib Windows平台 複雜,完全不推薦使用
記錄最近poi實作word模闆編輯的經過(一)

二、技術選型

由于剛開始沒有考慮收費的問題,直接使用了spire,來寫了一版,後來發現收費,免費版有段落處理的限制,還有最多三頁轉換的限制,收費的話,公司對這種收費模式還是比較排斥的,畢竟都是做技術的,能省的省。

技術修改:接着轉到了poi的研究上。

poi的處理比spire要多了好幾個數量級,我們都使用${key}的形式,表明參數,在使用上,包括了值得查找、書簽的使用、值得替換、key分段的情況處理,poi都是需要手動自己去處理的(使用的是3.X的版本,不知道5.X的版本能否省略一些代碼)。

最終值得替換問題都解決了,困在word轉pdf上了。

Ps:在探索中發現了産品和開源産品,我們百度過,也探索了gitee,最終還是沒能直接解決我們的問題。

記錄最近poi實作word模闆編輯的經過(一)

三、poi使用過程中的問題

  1. 值得查找問題
  2. 在開發過程中,我們使用${***}表示我們模闆中的變量,代碼如下
  3. 值得替換
  4. key分段的問題
  5. word轉pdf問題

後續繼續分享問題解決方案和word轉pdf