iText使用模板生成PDF
2016-07-08javaee攻城狮8024°c
A+ A-1.安装Adobe Acrobat DC
制作模板需要使用Adobe Acrobat DC软件,所以要提前安装好,这个自行在网上找,版本不是太老都可以。
2.用exce先设计好表格,然后另存为pdf
用excel首先设计好表单,改合并的合并,表头也要写好。 这里需要注意的是表格里面所有单元格格式要用文本 将设计好的表格另存为pdf
3.编辑模板
用Adobe Acrobat DC打开刚才另存的文件,然后文件--创建--创建表单
然后选择当前打开的文件,点击开始
将打开的编辑页面放大到合适的大小,可以看到除了表头外其他空余字段均被自动生成的字段填充,这些字段你可以手动更改,在字段上点击右键--属性
这里设置的名称,后面在操作的时候就是你要用代码填充的地方。例如我图片中写的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,内容展示如下:
所需要的jar包
标签:java