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)才能被读取出来放在指定的位置,图二读取出来了不知道要如何指定放置的位置,希望有大神能给出更好的建议。

图一:

Itext+POI将Excel转换为PDF_第1张图片

图二:

Itext+POI将Excel转换为PDF_第2张图片

  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]。如果有大神能解决我的遗留问题,欢迎留言讨论。

你可能感兴趣的:(itext,poi)