需求:Itext+poi將多份excel(多個sheet)、圖片轉換爲PDF,並最終合併成一份PDF,在合併的PDF文件每頁要加蓋公司印章
重點:
- 樣式設置(字體顏色、字體大小、斜體、加粗、下劃線、刪除線、中文顯示、單元格背景色、邊框粗細、邊框顏色、字體水平居中、垂直居中)
- 讀取單元格(合併單元格)裏的圖片(2003和2007)
- 合併單元格處理
- 單元格內容裏的整數、浮點數、日期類型的處理
- Itext頁碼標註
- 合併多個PDF文件
- 加蓋印章
遺留問題:
- poi可以通過font.getFont獲取字體樣式,但是itext裏通過font.setFamily設置了無效
- excel裏設置了邊框,轉換成PDF後邊框如有重疊顯示的線條就會加粗,所以我乾脆就直接設置所有邊框爲0.1f
- excel裏的圖片只能固定在單元格內才能在轉換爲PDF後顯示在指定的位置
下面兩張圖,只有第二張圖(固定了圖片顯示在A1-F19)才能被讀取出來放在指定的位置,圖二讀取出來了不知道要如何指定放置的位置,希望有大神能給出更好的建議。
圖一:
圖二:
- poi可以設置單元格邊框爲虛線,但是itext沒有找到相關API
- excel裏插入的形狀(例如:箭頭、矩形、三角形)不知道要如何讀取,最後是要求業務用符號代替的
- poi獲取行數列數不準確,sheet.getLastRowNum()和sheet.getPhysicalNumberOfRows(),有的時候前面那個獲取的是準確的,有的時候是後面的是準確的。
- 通過cell.setCellType(cell.Cell_TYPE_STRING),cell.getStringCellValue();可以獲取整數、浮點數,日期類型(2015.5.6)但是excel裏的日期如果寫成2015/9/10獲取的就是42257
- 如果一個單元格里的字體顏色有多種,最後只能顯示一種顏色
- 獲取的單元格背景顏色不夠精確,excel模板內容相同的xls和xlsx兩份文件轉出來的PDF效果不一致
- 合併PDF文件時,無法統一頁面的橫縱向顯示,並且無法獲取到準確的頁面寬度以設置頁碼的顯示位置