关于使用itext导出PDF的具体实践

时间:2022-01-25 22:19:24
    对于JAVA导出PDF文档查找了一下相关内容,发现网上大多数的关于itext导出PDF的文档均是com.lowagie.itext而目前该Api高版本已经使用com.itextpdf.itext公共JAR包,因此在这边记录下关于使用新版本itext导出PDF的实际运用。 

    个人对于ITEXT的了解而言,主要分为5个步骤: 

a、建立Documnet对象;
Java代码   关于使用itext导出PDF的具体实践
  1. Document document = new Document();  
b、建立读写器(PDFWriter)并与Document对象关联 

 
Java代码   关于使用itext导出PDF的具体实践
  1. PdfWriter.getInstance(document, new FileOutputStream("d://test6.pdf"));  
c、打开文档; 

   document.open(); 

d、写内容进入文档; 

  
Java代码   关于使用itext导出PDF的具体实践
  1. document.add(new Paragraph("test"));  
e、关闭文档; 

  
Java代码   关于使用itext导出PDF的具体实践
  1. document.close();  

这是一个相对简单的DPF导出。 


下面对于写内容进入文档部分进行稍详细的几记录: 
1、插入表格 
2、插入图片 
3、插入中文字体不识别问题 

插入表格主要分表头与表内容,相当于插入两张表来实现。首先新建PDFPTABLE对象。 
Java代码   关于使用itext导出PDF的具体实践
  1. PdfPTable table = new Table();  
  2.   
  3. PdfPCell cell = new PdfPCell(),  
循环数据插入到每个cell 
Java代码   关于使用itext导出PDF的具体实践
  1. for(User user ;list){  
  2. cell.setPhrase(new Paragraph(user.getName));  
  3. table.addCell(cell);//注:每个cell加入内容时及时加入到table中,否则cell内容将会被覆盖  

插入图片:简单的处理可以使用PdfPCell, 
在新建PdfPCell对象存在new PdfPCell(Image image)构造器或者直接使用
Java代码   关于使用itext导出PDF的具体实践
  1. PdfPtable.addCell(Image image),eg:table.addCell(Image. getInstance( "d://test.jpg"));  


中文问题,由于itext不支持中文的显示,因此需要使用到itext- asian字体转换API, 
通过Font对象来设置字体 
Java代码   关于使用itext导出PDF的具体实践
  1. new Font(BaseFont. createFont( "STSong-Light""UniGB-UCS2-H" ,BaseFont. NOT_EMBEDDED), 12, Font. NORMAL )  

附简单的代码文件若有错误,请各位斧正。 
以下是需要使用的maven包 
Java代码   关于使用itext导出PDF的具体实践
  1. <dependency>  
  2.     <groupId>com.itextpdf</groupId>  
  3.     <artifactId>itextpdf</artifactId>  
  4.     <version>5.5.1</version>  
  5. </dependency>  
  6. <dependency>  
  7.     <groupId>com.itextpdf</groupId>  
  8.     <artifactId>itext-asian</artifactId>  
  9.     <version>5.2.0</version>  
  10. </dependency>