http://blog.sina.com.cn/s/blog_a5e968370101crtl.html
1、 Jacob是Java-COM Bridge的縮寫,它在Java與微軟的COM組件之間構建一座橋梁。使用Jacob自帶的DLL動態鏈接庫,並通過JNI的方式實現了在Java平台上對COM程序的調用。DLL動態鏈接庫的生成需要windows平台的支持。
2、 Apache POI包括一系列的API,它們可以操作基於MicroSoft OLE 2 Compound Document Format的各種格式文件,可以通過這些API在Java中讀寫Excel、Word等文件。他的excel處理很強大,對於word還局限於讀取,目前只能實現一些簡單文件的操作,不能設置樣式。
3、 Java2word是一個在java程序中調用 MS Office Word 文檔的組件(類庫)。該組件提供了一組簡單的接口,以便java程序調用他的服務操作Word 文檔。
這些服務包括: 打開文檔、新建文檔、查找文字、替換文字,插入文字、插入圖片、插入表格,在書簽處插入文字、插入圖片、插入表格等。填充數據到表格中讀取表格數據 ,1.1版增強的功能: 指定文本樣式,指定表格樣式。如此,則可動態排版word文檔。
4、 iText操作Excel還行。對於復雜的大量的word也是噩夢。用法很簡單, 但是功能很少, 不能設置打印方向等問題。
5、 JSP輸出樣式基本不達標,而且要打印出來就更是慘不忍睹。
6、 用XML做就很簡單了。Word從2003開始支持XML格式,大致的思路是先用office2003或者2007編輯好word的樣式,然后另存為xml,將xml翻譯為FreeMarker模板,最后用java來解析FreeMarker模板並輸出Doc。經測試這樣方式生成的word文檔完全符合office標准,樣式、內容控制非常便利,打印也不會變形,生成的文檔和office中編輯文檔完全一樣。
7、補充一種方案,可以用類似ueditor的在線編輯器編輯word文檔,在將html文件轉換為xhtml文件,再轉換為word。
8、利用PageOffice插件網頁編輯word,還有weboffic插件等
參考網址
http://www.officectrl.com/webofficeview.htm
http://www.zhuozhengsoft.com/PageOffice/
http://www.itkeyword.com/doc/5122096026019575887/pageoffice-word
http://www.iqiyi.com/w_19rue2tp6t.html
https://www.cnblogs.com/qq742655/p/9025784.html
1. Jasper Report生成pdf:設計思路是先生成模板,然后得到數據,最后將兩者整合得到結果。但是Jasper Report的問題在於,其生成模板的方式過於復雜,即使有IDE的幫助,我們還是需要對其中的眾多規則有所了解才行,否則就會給調試帶來極大的麻煩。
2. openoffice生成pdf:openoffice是開源軟件且能在windows和linux平台下運行。
3. itext + flying saucer生成pdf:itext和flying saucer都是免費開源的,且與平台無關,結合css和velocity技術,可以很好的實現。
一般使用第三種方案比較多,它實現的步驟是非常簡單的。
JAVA生成word優缺點對比
所用技術 |
優點 |
缺點 |
Jacob |
功能強大 |
代碼量大,設置樣式繁瑣;需要windows平台支持,無法跨平台 |
Apache POI |
讀寫excel功能強大、操作簡單 |
一般只用它讀取word,能夠創建簡單的word,不能設置樣式,功能太少 |
Java2word |
功能強大,操作簡單 |
能滿足一般要求,不支持07格式,國人開發的,參考資料較多,需要windows平台支持 |
iText |
功能全,能滿足一般要求 |
不能直接生成或操作doc文檔,只能生成rtf格式的文檔,rtf也可以用word打開 |
JSP |
操作簡單,代碼量少 |
能把當前頁面導出簡單的word,不能設置樣式,美觀性差,無法操作word |
XML(最佳) |
代碼量少,樣式、內容容易控制,打印不變形,完全符合office標准 |
需要提前設計好word模板,把需要替換的地方用特殊標記標出來 |
JAVA生成pdf優缺點對比
所用技術 |
優點 |
缺點 |
openoffice |
本身就是office軟件,很容易設計一些文檔模板,支持java調用實現word轉換成pdf |
需要先安裝,設計好pdf模板樣式,然后用程序來填充那些預留好的變量 |
itext |
能滿足要求,本身提供了一些api |
無法識別很多html的tag和attribute,無法識別css,需要用其api函數來設置樣式 |
Jasper Report |
能滿足要求,市面上使用的比較多,相關文檔多 |
復雜,很難完全掌握,需要先設計模板,強依賴於IDE進行可視化編輯 |
flying sauser(最佳) |
能解析html和css輸出成image、pdf等格式,操作簡單,api強大 |
需要編寫freemarker或velocity模板,打造html,勾畫pdf的樣式 |