你好,欢迎访问我的博客!登录
当前位置:首页 - javaee - 正文 求知成瘾,却无作品!

iText使用模板生成PDF

2016-07-08javaee攻城狮8024°c
A+ A-


1.安装Adobe Acrobat DC

制作模板需要使用Adobe Acrobat DC软件,所以要提前安装好,这个自行在网上找,版本不是太老都可以。

2.用exce先设计好表格,然后另存为pdf

用excel首先设计好表单,改合并的合并,表头也要写好。 这里需要注意的是表格里面所有单元格格式要用文本 将设计好的表格另存为pdf 

EbyS4ob.png

vqSL0MM.png

3.编辑模板

用Adobe Acrobat DC打开刚才另存的文件,然后文件--创建--创建表单

Ns7SgOn.png

5UjXJhG.png

然后选择当前打开的文件,点击开始

将打开的编辑页面放大到合适的大小,可以看到除了表头外其他空余字段均被自动生成的字段填充,这些字段你可以手动更改,在字段上点击右键--属性

AcUIar3.png

这里设置的名称,后面在操作的时候就是你要用代码填充的地方。例如我图片中写的idRow1 idRow2在后台就需要如下操作:

AcroFields s=ps.getAcroFields();
s.setField("idRow1","叶良辰");
s.setField("idRow2","叶良辰2号");

这里也可以设计字体大小,对齐方式等。设计完毕后点击上方的保存按钮,这样模板就做好了。

4.通过模板填充数据

后台通过代码读取刚刚保存好的模板文件,对模板中的字段进行填充,进而生产最终的PDF文档。 代码示例如下:

import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

public class PdfTest2 {
    public static void main(String[] args) {
        PdfTest2.fromPDFTempletToPdfWithValue();
    }
    public static void fromPDFTempletToPdfWithValue() {
        //模板文件
        String fileName = "C:\\Users\\Administrator\\Desktop\\w5.pdf";  
        try {
            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);


            AcroFields s = ps.getAcroFields();
            s.setFieldProperty("idRow1", "textfont", bf, null);
            s.setFieldProperty("idRow2", "textfont", bf, null);
            s.setFieldProperty("idRow3", "textfont", bf, null);
            s.setFieldProperty("nameRow1", "textfont", bf, null);
            s.setFieldProperty("nameRow2", "textfont", bf, null);
            s.setFieldProperty("nameRow3", "textfont", bf, null);

            s.setField("idRow1", "测试一");
            s.setField("idRow2", "测试二");
            s.setField("idRow3", "叶良辰");
            s.setField("nameRow1", "叶良辰2");
            s.setField("nameRow2", "叶良辰3");
            s.setField("nameRow3", "叶良辰4");
            //设置为true/false在点击生成的pdf文档的填充域时有区别,
            ps.setFormFlattening(true);
            ps.close();
            //最终生成的文件,
            FileOutputStream fos = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\st1_8.pdf");
            fos.write(bos.toByteArray());


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

以上代码运行后,会在桌面上生成一个st1_8.pdf,内容展示如下:

QjRcdee.png


所需要的jar包

itext.jar

itext-asian-5.2.0.jar

itextpdf-5.5.3.jar


标签:
推荐阅读

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。


  登录