一、概述
#PDF轉換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平台 | 複雜,完全不推薦使用 |
二、技術選型
由于剛開始沒有考慮收費的問題,直接使用了spire,來寫了一版,後來發現收費,免費版有段落處理的限制,還有最多三頁轉換的限制,收費的話,公司對這種收費模式還是比較排斥的,畢竟都是做技術的,能省的省。
技術修改:接着轉到了poi的研究上。
poi的處理比spire要多了好幾個數量級,我們都使用${key}的形式,表明參數,在使用上,包括了值得查找、書簽的使用、值得替換、key分段的情況處理,poi都是需要手動自己去處理的(使用的是3.X的版本,不知道5.X的版本能否省略一些代碼)。
最終值得替換問題都解決了,困在word轉pdf上了。
Ps:在探索中發現了産品和開源産品,我們百度過,也探索了gitee,最終還是沒能直接解決我們的問題。
三、poi使用過程中的問題
- 值得查找問題
- 在開發過程中,我們使用${***}表示我們模闆中的變量,代碼如下
- 值得替換
- key分段的問題
- word轉pdf問題
後續繼續分享問題解決方案和word轉pdf