我们可以发现很多求职网站都会将我们录入的信息来生成一个PDF简历文件。所以我这里提供了用itextpdf生成的PDF的代码。
一、步骤
1.1、使用Adobe Acrobat Pro工具编辑PDF模板
1.2、根据PDF模板文件路径创建一个PDFReader对象
1.3、创建一个输出流对象,用于存放生成的PDF文件
1.4、利用前面的对象,创建一个PDF印章,并获取PDF表单
1.5、设置支持中文
1.6、填充数据
1.7、关闭流
二、具体操作和编码
2.1、编辑PDF模板
打开求职信模板,如下所示:
点击准备表单,然后就可以向这个PDF文件中添加各种表单组件了
我这里添加了四个文本域:name、mobile、email、position,然后保存文件,这样我们的模板文件就编辑好了。
编辑好的模板下载
2.2、具体编码
我这里使用Maven来构建工程,需要在pom.xml中添加依赖
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.6</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.AcroFields.FieldPosition;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;public class PDF {public static void main(String[] args) throws IOException, DocumentException {// 1、创建PDFReader对象PdfReader reader = new PdfReader("C:\\Users\\cc\\Desktop\\求职信模板.pdf");// 模板文件的路径// 2、创建输出流对象FileOutputStream fos = new FileOutputStream("C:\\Users\\cc\\Desktop\\我的求职信.pdf");// 最后输出文件的路径// 3、创建印章对象PdfStamper ps = new PdfStamper(reader, fos);// 4、获取PDF表单AcroFields fields = ps.getAcroFields();// 5、设置支持中文BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);fields.addSubstitutionFont(bfChinese);// 6、数据填充(没有图片的话下面可以省略)List<FieldPosition> signature = fields.getFieldPositions("image");for (int i = 0; i < signature.size(); i++) {Image img = Image.getInstance("C:\\Users\\cc\\Desktop\\1.png");float x = signature.get(i).position.getLeft();float y = signature.get(i).position.getBottom();float width = signature.get(i).position.getWidth();float height = signature.get(i).position.getHeight();img.setAlignment(Image.DEFAULT);// 设置对齐位置img.setAbsolutePosition(x, y);// 设置坐标位置img.scaleAbsolute(width, height);// 设置图片大小:宽200,高90// img.scalePercent(5);//设置图片百分比PdfContentByte contentByte = ps.getOverContent(signature.get(i).page);contentByte.addImage(img);// 添加图片}fields.setField("name", "张三");fields.setField("mobile", "17017511125");fields.setField("email", "1658633515@qq.com");fields.setField("position", "Java开发工程师");ps.setFormFlattening(true);// 7、流关闭ps.close();fos.close();}}