Itext+POI將Excel轉換爲PDF

需求:Itext+poi將多份excel(多個sheet)、圖片轉換爲PDF,並最終合併成一份PDF,在合併的PDF文件每頁要加蓋公司印章

重點:

  1. 樣式設置(字體顏色、字體大小、斜體、加粗、下劃線、刪除線、中文顯示、單元格背景色、邊框粗細、邊框顏色、字體水平居中、垂直居中)
  2. 讀取單元格(合併單元格)裏的圖片(20032007
  3. 合併單元格處理
  4. 單元格內容裏的整數、浮點數、日期類型的處理
  5. Itext頁碼標註
  6. 合併多個PDF文件
  7. 加蓋印章

遺留問題:

  1. poi可以通過font.getFont獲取字體樣式,但是itext裏通過font.setFamily設置了無效
  2. excel裏設置了邊框,轉換成PDF後邊框如有重疊顯示的線條就會加粗,所以我乾脆就直接設置所有邊框爲0.1f

              

 

    

 

  1. excel裏的圖片只能固定在單元格內才能在轉換爲PDF後顯示在指定的位置

下面兩張圖,只有第二張圖(固定了圖片顯示在A1-F19)才能被讀取出來放在指定的位置,圖二讀取出來了不知道要如何指定放置的位置,希望有大神能給出更好的建議。

圖一:


圖二:


  1. poi可以設置單元格邊框爲虛線,但是itext沒有找到相關API
  2. excel裏插入的形狀(例如:箭頭、矩形、三角形)不知道要如何讀取,最後是要求業務用符號代替的
  3. poi獲取行數列數不準確,sheet.getLastRowNum()sheet.getPhysicalNumberOfRows(),有的時候前面那個獲取的是準確的,有的時候是後面的是準確的。
  4. 通過cell.setCellType(cell.Cell_TYPE_STRING),cell.getStringCellValue();可以獲取整數、浮點數,日期類型(2015.5.6)但是excel裏的日期如果寫成2015/9/10獲取的就是42257
  5. 如果一個單元格里的字體顏色有多種,最後只能顯示一種顏色
  6. 獲取的單元格背景顏色不夠精確,excel模板內容相同的xlsxlsx兩份文件轉出來的PDF效果不一致
  7. 合併PDF文件時,無法統一頁面的橫縱向顯示,並且無法獲取到準確的頁面寬度以設置頁碼的顯示位置

重點裏標註的是我已經實現了的,遺留問題是我暫時沒解決的。做這個的時候參考了很多前人的資料,但是還是發現有很多問題,有些問題有人遇到提出來了,但是網上也沒有明確的解決辦法,有些問題是壓根兒都沒人提出來,網上的很多例子都很簡單,如果表格複雜,轉PDF就有問題,所以建議公司一定要用這個的話,最好購買專門的軟件。

PS:不提供代碼了,代碼在公司電腦上,沒辦法拿出來,如果有問題,可以郵件我,[email protected]。如果有大神能解決我的遺留問題,歡迎留言討論。

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