首页 > 代码库 > itext操作pdf文件

itext操作pdf文件

itext操作pdf模板:

1、首先使用excel制作好模板文件,将模板文件转换为pdf格式文件。

2、使用Adobe Acrobat XI Pro工具打开pdf文件,在需要的位置添加文本域。(工具-->表单-->编辑)

 

3、对每个文本域设置文本域属性,为其命名。如title、desion_no等。

 

4、通过itext方式操作文本域,为期赋值,并重新生成pdf文件。

  1 package com.pcm.app.transfer;  2   3 import java.io.ByteArrayOutputStream;  4 import java.io.File;  5 import java.io.FileOutputStream;  6   7 import org.apache.log4j.Logger;  8   9 import com.itextpdf.text.pdf.AcroFields; 10 import com.itextpdf.text.pdf.BaseFont; 11 import com.itextpdf.text.pdf.PdfReader; 12 import com.itextpdf.text.pdf.PdfStamper; 13 import com.itextpdf.text.pdf.PdfWriter; 14 import com.pcm.app.pojo.SimplePunishWrite; 15 import com.pcm.app.pojo.VioBehaviour; 16 import com.pcm.app.utils.CodeFactory; 17 import com.pcm.app.utils.TomcatUtil; 18 import com.pcm.framework.utils.InitUtil; 19  20 /** 21  * 使用pdf模板生成简易程序文件 22  * @author  23  * 24  */ 25 public class GeneratePDFService{ 26      27     private static Logger logger = Logger.getLogger(GeneratePDFService.class); 28      29     private static final String PDF_FILE_TYPE = ".pdf"; 30      31     private PdfStamper ps = null; 32      33     private FileOutputStream fos = null; 34      35     private String path = System.getProperty("user.dir"); 36      37     /** 38      * 冒号 39      */ 40     private static final String COLON = ":"; 41      42     private static final String URL_START = "http://"; 43     private static final String WEBAPPS = "/webapps"; 44     private static final String SERVER_PATH = "/SL_JWT/pdf/"; 45     private static final String TOMCAT_CONFIG_FILE = "/conf/server.xml"; 46     private static final String PDF_FILE_NAME = "simplepunish"; 47     private static final String PDF_TEMPLET_FILENAME = "sp_templet"; 48  49     /** 50      * 使用模板生成PDF文件 51      */ 52     public boolean generateSimplePunishPDFFromPDFTemplet(SimplePunishWrite sp,VioBehaviour behaviour) { 53         logger.info("Enter generateSimplePunishPDFFromPDFTemplet method...");  54         boolean isSuccess = false; 55         String teamName = InitUtil.getProperty("team_name"); 56         String policeStation = InitUtil.getProperty("police_station"); 57         String courtName = InitUtil.getProperty("court_name"); 58         try { 59             BaseFont font = BaseFont.createFont("font/simsun.ttc,1", 60                     BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 61             String fileNameTemplet = getClientVersionSavePath(PDF_TEMPLET_FILENAME); 62             ByteArrayOutputStream bos = new ByteArrayOutputStream(); 63             PdfReader reader = new PdfReader(fileNameTemplet); 64             ps = new PdfStamper(reader, bos,PdfWriter.VERSION_1_5,false); 65             AcroFields field = ps.getAcroFields(); 66             setFieldProperty("title",font,field); //title为pdf中添加的域 67             field.setField("title", teamName);  //设置域的值132             // 注意pdf中域的大小,这里设置的值太长,pdf中会显示不全133             // 设置为true/false在点击生成的pdf文档的填充域时有区别,134             ps.setFormFlattening(true);135             ps.close();136             String fileName = getClientVersionSavePath(PDF_FILE_NAME);138             fos = new FileOutputStream(fileName);  //生成文件139             fos.write(bos.toByteArray());140             fos.close();141             isSuccess = true;142             logger.info("End generated pdf file.");143         } catch (Exception e) {144             logger.error("Generate pdf file occur exception.", e);145             return isSuccess;146         }  finally {147             logger.info("close stream resource.");148             try {149                 if (ps != null) {150                     ps.close();151                     ps = null;152                 }153                 if (fos != null) {154                     fos.close();155                     fos = null;156                 }157             } catch (Exception e1) {158                 logger.error("close stream occur exception", e1);159             }160         }161         return isSuccess;162     }163     280     private void setFieldProperty(String key,BaseFont font, AcroFields field) {281         field.setFieldProperty(key,"textfont",font,null); //处理乱码282     }283     /**284      * 移动终端访问文件所在web地址285      * @param fileName286      * @param version287      * @return288      */289     public String getURLAddress(String fileName) {290         String filepath = getTomcatConfigFilePath();291         File serverXml = new File(filepath);292         String ip = TomcatUtil.getLocalHostAddress();293         int port = TomcatUtil.getTomcatPortFromConfigXml(serverXml);294         String url = new StringBuffer().append(URL_START)295                                        .append(ip).append(COLON)296                                        .append(port).append(SERVER_PATH)297                                        .append(fileName).append(PDF_FILE_TYPE)298                                        .toString();299         logger.info("The client version url address is : " + url);300         return url;301     }302 303     /**304      * 获取PDF文件保存路径305      * @param clientVersion306      * @return307      */308     private String getClientVersionSavePath(String fileName) {310         StringBuffer sb = new StringBuffer();311         sb.append(path);312         sb.append(WEBAPPS);313         sb.append(SERVER_PATH);314         sb.append(fileName);315         sb.append(PDF_FILE_TYPE);316         logger.info("The PDF file save path is " + sb.toString());317         return sb.toString();318     }319 320     /**321      * 获取tomcat服务器../conf/server.xml文件路径322      * @param clientVersion323      * @return324      */325     private String getTomcatConfigFilePath() {326         StringBuffer sb = new StringBuffer();327         sb.append(path);328         sb.append(TOMCAT_CONFIG_FILE);329         logger.info("The tomcat server.xml file path is " + sb.toString());330         return sb.toString();331     }332     333     public String toString(Object obj) {334         return obj != null ? toString(obj, "utf-8").trim() : "无";335     }336     337     private String toString(Object obj, String charset) {338         if (obj instanceof byte[]) {339             try {340                 return new String((byte[]) obj, charset);341             } catch (Exception e) {342                 return new String((byte[]) obj);343             }344         } else {345             return obj.toString();346         }347     }348 }

 

itext操作pdf文件