利用iText导出pdf文件代码,itext导出pdf代码,根据给定的pdf模板,导
利用iText导出pdf文件代码,itext导出pdf代码,根据给定的pdf模板,导
根据给定的pdf模板,导出pdf文件,并根据给定内容替换pdf模板中的输入域。至于如何制作pdf模板,请参考Adobe公司的软件Acrobat,该软件对pdf模板的制作提供了很好的支持。p.s.需要导入jiar包:itextpdf-5.4.1.jar。
一、导出pdf工具类:```java package pdf;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.Map;import com.itextpdf.text.DocumentException;import com.itextpdf.text.pdf.AcroFields;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfReader;import com.itextpdf.text.pdf.PdfStamper;/ * 导出pdf工具类<br> * 根据给定的pdf模板,导出pdf文件,并根据给定内容替换pdf中的输入域 * @author wangtl /public class ExportPdfUtil { / * * 导出pdf工具类 <br> * 导出pdf工具类 * * @param outpath 输出路径 * @param fontPath 字体路径 * @param templateName pdf模板文件路径名 * @param content 需要填充内容 * @return */ public static String exportpdf(String outpath, String templateName, String fontPath, Map<String, String> content) {
// 得到当前时间 Date now = new Date(); SimpleDateFormat dataformat = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss"); String t = dataformat.format(now); // 得到一个随机数 String ran = Math.random() + ""; // 以当前时间加上一个随机数获取下载的文件以保证不重名 String filename = t + "-" + ran; String savepath = outpath + File.separator + filename + ".pdf"; PdfReader reader = null; ByteArrayOutputStream bos = null; PdfStamper ps = null; FileOutputStream fos = null; try { // 创建字体 BaseFont chineseSong = BaseFont.createFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); // 读取pdf reader = new PdfReader(templateName); bos = new ByteArrayOutputStream(); ps = new PdfStamper(reader, bos); AcroFields s = ps.getAcroFields(); // 添加所创建的字体 s.addSubstitutionFont(chineseSong); //找到pdf中输入域并替换为内容 Iterator<String> it = s.getFields().keySet().iterator(); while(it.hasNext()){ String name = (String) it.next(); s.setField("" + name.trim(), content.get(name.trim())); } //这两步必须有,否则pdf生成失败 ps.setFormFlattening(true); ps.close(); //输出pdf fos = new FileOutputStream(savepath); fos.write(bos.toByteArray()); } catch (FileNotFoundException e) { System.out.println("FileNotFoundException"); e.printStackTrace(); } catch (Exception e) { System.out.println("Exception"); e.printStackTrace(); } finally { if (null != reader) { reader.close(); } try { if (null != bos) { bos.close(); } } catch (IOException e) { System.out.println("failed to close ByteArrayOutputStream "); } try { if (null != ps) { ps.close(); } } catch (DocumentException e) { System.out.println("failed to close PdfStamper "); } catch (IOException e) { System.out.println("failed to close PdfStamper "); } try { if (null != fos) { fos.close(); } } catch (IOException e) { System.out.println("failed to close FileOutputStream "); } } return filename;}
}
二、测试类: ```java package test;import java.util.HashMap;import java.util.Map;import pdf.ExportPdfUtil;public class TestPdf { public static void main(String[] args) { Map<String,String> content=new HashMap<String,String>(); content.put("name", "你好");//根据模板定义的输入域的名字(如:name),填充值 ExportPdfUtil.exportpdf("C:\\", "C:\\template.pdf", "c://windows//fonts//simsun.ttc,1", content); }}
用户点评