Java生成PDF文档 iText使用PDF模板二

此篇是基于Java生成PDF文档 iText使用PDF模板一 的基础上写的,也都差不多,就是写了2个Demo而已。

如果对您有帮助 ,请多多支持.多少都是您的心意与支持,一分也是爱,再次感谢!!!打开支付宝首页搜“556723462”领红包,领到大红包的小伙伴赶紧使用哦!

 支付宝赞赏:记得点击下面的余额宝,红包可能要大些。

注意:余额宝红包有效期三天(72小时) 在有效期内
余额宝红包使用完或过期才能有机会领取下个余额宝红包,感谢大家的支持!您的支持,我会继续分享更多的文章,欢迎关注!

废话不多说了,基本上是一样的操作:

代码如下:

一:创建maven项目,加入依赖


			com.itextpdf
			itextpdf
			5.4.2
		
		
		
			com.itextpdf
			itext-asian
			5.2.0
		

 

二:创建对应pdf模板,这里,就不仔细介绍了,模板图所下:

Java生成PDF文档 iText使用PDF模板二_第1张图片

三:创建对应的实体类如下:

package com.demo3;

public class JuanBook {
	private String id;// 编号
	private String name;//名称
	private String shoolName;// 学校名称
	private String rmb;// 人民币
	private String data;// 日期
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getShoolName() {
		return shoolName;
	}
	public void setShoolName(String shoolName) {
		this.shoolName = shoolName;
	}
	public String getRmb() {
		return rmb;
	}
	public void setRmb(String rmb) {
		this.rmb = rmb;
	}
	public String getData() {
		return data;
	}
	public void setData(String data) {
		this.data = data;
	}
	@Override
	public String toString() {
		return "JuanBook [id=" + id + ", name=" + name + ", shoolName=" + shoolName + ", rmb=" + rmb + ", data=" + data
				+ "]";
	}
	//有参构造
	public JuanBook(String id, String name, String shoolName, String rmb, String data) {
		super();
		this.id = id;
		this.name = name;
		this.shoolName = shoolName;
		this.rmb = rmb;
		this.data = data;
	}
	//无参
	public JuanBook() {
		super();
	}
	
	
}

四:创建模板:

package com.demo3;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;

import com.demo.Ticket;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
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 PDFTempletBook {
	private String templatePdfPath;//模板路径
	private String ttcPath;//生成的新路径
	private String targetPdfpath;//源路径
	private JuanBook juanBook;//捐赠实体
	private static final String FONT = "中黑体.ttf";//引入的字体
	//get与set
	public String getTemplatePdfPath() {
		return templatePdfPath;
	}

	public void setTemplatePdfPath(String templatePdfPath) {
		this.templatePdfPath = templatePdfPath;
	}

	public String getTtcPath() {
		return ttcPath;
	}

	public void setTtcPath(String ttcPath) {
		this.ttcPath = ttcPath;
	}

	public String getTargetPdfpath() {
		return targetPdfpath;
	}

	public void setTargetPdfpath(String targetPdfpath) {
		this.targetPdfpath = targetPdfpath;
	}


	public JuanBook getJuanBook() {
		return juanBook;
	}

	public void setJuanBook(JuanBook juanBook) {
		this.juanBook = juanBook;
	}

	//无参构造
	public PDFTempletBook() {
		super();
	}
	//有参构造
	public PDFTempletBook(String templatePdfPath, String ttcPath, String targetPdfpath, JuanBook juanBook) {
		super();
		this.templatePdfPath = templatePdfPath;
		this.ttcPath = ttcPath;
		this.targetPdfpath = targetPdfpath;
		this.juanBook = juanBook;
	}
	// 使用中文字体 
	Font f1 = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
	

	//获取
	public void templetTicket(File file) throws Exception {
		//创建一个pdf读取对象
		PdfReader reader = new PdfReader(templatePdfPath);
		//创建一个输出流
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		//创建pdf模板,参数reader  bos
		PdfStamper ps = new PdfStamper(reader, bos);
		//封装数据,取出模板中的所有字段数据,读取文本域
		AcroFields s = ps.getAcroFields();
		s.setField("id", juanBook.getId());
		s.setField("name", juanBook.getName());
		s.setField("shoolname", juanBook.getShoolName());
		s.setField("rmb", juanBook.getRmb());
		s.setField("data", juanBook.getData());
		ps.setFormFlattening(true);//必须要调用这个,否则文档不会生成的
		ps.close();//关闭PdfStamper
		FileOutputStream fos = new FileOutputStream(file);//创建文件输出流
		fos.write(bos.toByteArray());//写入数据
		fos.close();//关闭输出流
	}
}

五:测试代码效果:

package com.demo3;

import java.io.File;

public class TestDemo {
	
	public static void main(String[] args) throws Exception {
		//捐赠对象
		JuanBook juanBook = new JuanBook();
		juanBook.setId("518518666");
		juanBook.setName("中国人民");
		juanBook.setShoolName("中国大学人民的大学");
		juanBook.setRmb("50000亿");
		juanBook.setData("2018年8月8日");
		
		//模板对象
		PDFTempletBook Ticketpdf = new PDFTempletBook();
		//模板源路径
		Ticketpdf.setTemplatePdfPath("D:\\pdfDemo\\捐赠证书.pdf");
		//设置tarGet的路径,这个是项目中的源路径
		//Ticketpdf.setTargetPdfpath("D:\\a.pdf");
		//set封装捐赠对象信息
		Ticketpdf.setJuanBook(juanBook);
		//指定生成的新路径
		File file = new File("D:\\pdfDemo\\4.pdf");
		//创建文件
		file.createNewFile();
		//使生成的文件file生效,这个必须有
		Ticketpdf.templetTicket(file);
	}
}

六:结果如下:

Java生成PDF文档 iText使用PDF模板二_第2张图片

你可能感兴趣的:(pdf)