itext根据模板自动生成PDF


---首先先要下载一个Adobe Acrobat DC  设计模板。准备表单域为可编辑。

然后根据模板动态生成数据。字体大小在 Adobe Acrobat DC  中设置字体大小

需要依赖-----最后两个

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
rainbow
rainbow
war
1.0.0-SNAPSHOT
rainbow Maven Webapp
http://maven.apache.org

4.1.3.RELEASE




org.springframework
spring-test
${spring.version}
test


junit
junit
4.11
test





org.springframework
spring-webmvc
${spring.version}


org.springframework
spring-core
${spring.version}


org.springframework
spring-jdbc
${spring.version}


org.springframework
spring-support
2.0.6



org.mybatis
mybatis
3.2.8


org.mybatis
mybatis-spring
1.2.2





javax.servlet
servlet-api
3.0-alpha-1





ch.qos.logback
logback-core
1.1.2


ch.qos.logback
logback-classic
1.1.2


org.slf4j
slf4j-api
1.7.9





com.alibaba
druid
1.0.12


org.aspectj
aspectjweaver
1.8.4





mysql
mysql-connector-java
5.1.24





com.alibaba
fastjson
1.2.3





joda-time
joda-time
2.7





commons-lang
commons-lang
2.5


commons-collections
commons-collections
3.1


commons-codec
commons-codec
1.9


commons-fileupload
commons-fileupload
1.2


commons-io
commons-io
2.0.1



org.apache.commons
commons-lang3
3.1




com.gif4j
gif4j-pro_trail
2.3


com.jhlabs
filters
2.0.235




com.google.guava
guava
18.0



jstl
jstl
1.2





org.apache.shiro
shiro-all
1.2.2




net.sf.ehcache
ehcache
2.7.2




org.quartz
quartz-all
1.6.5



    commons-beanutils
    commons-beanutils
    1.9.2



    cglib
    cglib
    2.2.2



    com.microsoft.sqlserver
  sqljdbc4
  4.0



    log4j
    log4j
    1.2.17


      redis.clients  
    jedis  
    2.0.0  
    jar  
    compile  
   

  
  
    org.springframework.data  
    spring-data-redis  
    1.0.0.RELEASE  
 

    org.json
    json
    20160810


          com.taobao
          taobao-sdk-java-auto
          1.0
     

     
            com.thoughtworks.xstream
            xstream
            1.4.7
            provided
       

       
       
      org.jdom
      jdom
      2.0.2
   

   
          dom4j
      dom4j
      1.6.1
   

   
      jaxen
      jaxen
      1.1.6
   

    
  
   
        org.apache.httpcomponents
        httpclient
        4.5.3
   

    

    commons-httpclient
    commons-httpclient
    3.1

    
    
       
            org.apache.httpcomponents
            fluent-hc
            4.3.5
            provided
       

        
       
            org.apache.httpcomponents
            httpclient-cache
            4.3.5
            provided
       

       
  org.apache.httpcomponents
  httpcore
  4.4.6

        
       
            org.apache.httpcomponents
            httpmime
            4.3.5
            provided
       

       
com.qiniu
qiniu-java-sdk
[7.2.0, 7.2.99]

 
       
            org.apache.poi
            poi
            3.16
       

       
       
            org.apache.poi
            poi-ooxml
            3.16
       

       
        
       
       

    com.itextpdf
    itextpdf
    5.5.8


    com.itextpdf.tool
    xmlworker
    5.5.8


    com.itextpdf
    itext-asian
    5.2.0

        


rainbow



---------业务层

package com.rainbow.rainbowcode.PDF;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;


import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.AcroFields.Item;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
 
public class Snippet {

//利用模板生成pdf
    public static void fillTemplate(){
        //模板路径
        String templatePath = "E:/测试.pdf";
        //生成的新文件路径
        String newPDFPath = "E:/ceshi.pdf";
        PdfReader reader;
        FileOutputStream out;
        ByteArrayOutputStream bos;
        PdfStamper stamper;
        try {
            out = new FileOutputStream(newPDFPath);//输出流
            reader = new PdfReader(templatePath);//读取pdf模板
            bos = new ByteArrayOutputStream();
            stamper = new PdfStamper(reader, bos);
            AcroFields form = stamper.getAcroFields();
 
            String[] str = { "周勇政", "68728110", "河南省", "18736350121", "66666666", "张三","小型汽车","68748110","豫c" ,"on"};
            int i = 0;
            //解决中文不显示的问题 注意需要引入itext-asian.jar包
            BaseFont bf = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
            java.util.Iterator it = form.getFields().keySet().iterator();
           
           
            
            while(it.hasNext()){
                String name = it.next().toString();
                form.setFieldProperty(name,"textfont",bf,null);
                System.out.println(name);
                form.setField(name, str[i++]);
            }
            stamper.setFormFlattening(true);//如果为false那么生成的PDF文件还能编辑,一定要设为true
            stamper.close();
 
            Document doc = new Document();
            PdfCopy copy = new PdfCopy(doc, out);
            doc.open();
            int pageNums = reader.getNumberOfPages();
            for (int i1 = 1; i1 < pageNums+1; i1++) {
                PdfImportedPage importPage = copy.getImportedPage(
                        new PdfReader(bos.toByteArray()), i1);
                copy.addPage(importPage);
            }
            doc.close();
 
        } catch (IOException e) {
            System.out.println(1);
        } catch (DocumentException e) {
            System.out.println(2);
        }
 
 
    }
   

}

完成--控制器调用就行了

你可能感兴趣的:(itext根据模板自动生成PDF)