欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

利用iText导出pdf文件代码,itext导出pdf代码,根据给定的pdf模板,导

来源: javaer 分享于  点击 46125 次 点评:118

利用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); }}
相关栏目:

用户点评