Java用itext工具根据模板生成PDF

itext工具

        在企业的信息系统中,报表处理一直占比较重要的作用,iText是一种生成PDF报表的Java组件。

        iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

        itext官网

The Leading PDF Library for Developers | iTextThe leading Java and C# PDF Library SDK. A programmable Java and .NET PDF SDK library to create, manipulate and edit PDF documents. Convert Html files to pdf, Debug pdf files, extract data from PDF and more.https://itextpdf.com/en

Adobe Acrobat DC

       Adobe Acrobat DC是Adobe公司的一款PDF编辑和阅读软件,可将纸质图片、文字迅速转化成PDF或文档格式,比如人们通过手机拍照,可让纸质版文字转化成电子版,用户可直接对文档进行修改。另外,通过移动端和PC端,Acrobat DC可让Excel、Word和PDF之间的相互转化更为便利。

         Adobe Acrobat DC官网

Adobe Acrobat DC PDF software | Adobe AcrobatMake your job easier with Adobe Acrobat DC, the trusted PDF editor and creator. Use Acrobat PDF software at your desk or on the go.https://www.adobe.com/acrobat.html

实现过程

        创建word文档

Java用itext工具根据模板生成PDF_第1张图片

转化为pdf

Java用itext工具根据模板生成PDF_第2张图片

Java用itext工具根据模板生成PDF_第3张图片

 创建表单

        打开pdf用Adobe Acrobat DC的打开,然后打开工具的准备表单

Java用itext工具根据模板生成PDF_第4张图片

Java用itext工具根据模板生成PDF_第5张图片

 修改表单的key值

Java用itext工具根据模板生成PDF_第6张图片

表单已建立,保存到本地磁盘。

Java用itext工具根据模板生成PDF_第7张图片

 

实现代码

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;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * itext编辑pdf
 */
public class MyItext {
    public static void main(String[] args) throws IOException, DocumentException {
        Map data = new HashMap();//要插入的数据
        data.put("name", "张三");
        data.put("sex", "男");
        data.put("major", "计算机科学与技术");
        data.put("hobby", "跑步");
        data.put("phone", "1xxxxxxxxxx");
        try {
            // pdf模板所在路径,就是网站制作好后下载的pdf模板路径
            String fileName = "D:\\\\itext\\\\itextTemplate.pdf";
            PdfReader reader = new PdfReader(fileName);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            PdfStamper ps = new PdfStamper(reader, bos);

            // 使用中文字体
            BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            ArrayList fontList = new ArrayList();
            fontList.add(bf);
            AcroFields fields = ps.getAcroFields();
            fields.setSubstitutionFonts(fontList);
            for (String key : data.keySet()) {
                String value = data.get(key);
                // 为字段赋值,注意字段名称是区分大小写的
                fields.setField(key, value);
            }
            //必须要调用这个,否则文档不会生成的
            ps.setFormFlattening(true);
            ps.close();

            //生成pdf路径存放的路径
            OutputStream fos = new FileOutputStream("D:\\itext\\itextTemplateOutput.pdf");
            fos.write(bos.toByteArray());
            fos.flush();
            fos.close();
            bos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

 运行结果

 打开生成的pdf,数据已插入到对应的key。

Java用itext工具根据模板生成PDF_第8张图片

你可能感兴趣的:(JAVA,java,itext,根据模板生成PDF,pdf,AdobeAcrobatDC)