2025年根据pdf模板填充数据生成pdf文件

根据pdf模板填充数据生成pdf文件需要的 jar 包 dependency groupid com itextpdf groupid artifactid itextpdf artifactid version 5 4 3 version dependency lt

大家好,我是讯享网,很高兴认识大家。

需要的jar包

<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.4.3</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</version> </dependency>
讯享网

效果图: 模板填充数据,方框的数据为数据库查出来进行填充,有文字和图片

 下面是详细的步骤:

1.首先,新建一个word文档,内容如下,另存为pdf格式,我的命名:测试.pdf。

  

2.打开Adobe Acrobat Pro 

3.点击文件--创建-->创建表单---选择刚生成pdf文件---然后开始

 

 4.如下图是制作好的pdf模板,直接保存即可。注意:黑框里面的名称,是后面程序要用到的,程序根据名称给对应的位置赋值的。

 5点击属性中,可以选择换行,设置字体样式和大小,剧中对齐

代码:

讯享网package com.wxz; import com.itextpdf.text.Image; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.*; import org.apache.commons.lang3.StringUtils; import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.util.HashMap; import java.util.Map; / * TODO * 使用pdf模板填充数据最后生成pdf文件 * @author wxz * @date 2021/11/24 14:33 */ public class TestPdf { public static void main(String[] args) { //pdf模板位置 String templatePath = "D:\\image\\测试pdf.pdf"; //图片位置 String imgpath = "D:\\image\\wyb.png"; // 生成的新文件路径 String pdfPath = "D:\\测试pdf.pdf"; try { //设置中文字体 BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); PdfReader reader = new PdfReader(templatePath);// 读取pdf模板 ByteArrayOutputStream bos = new ByteArrayOutputStream(); //获取字节数组输出流 PdfStamper stamper = new PdfStamper(reader, bos); //操作pdf文件 AcroFields form = stamper.getAcroFields(); //获取pdf模板中的属性 form.addSubstitutionFont(bf); //为属性设置字体 //处理模板文字部分 Map<String, String> map = new HashMap<String, String>(); map.put("bh", "99999"); map.put("mc", "aaaa有限公司"); map.put("dz", "安徽省马鞍山市花山区民族大道1099号大学城美食城A湖北省武汉社想下去金融港青年公寓"); map.put("fzrq", "2020-11-23"); map.put("yxqz", "2030-11-23"); for (Map.Entry<String, String> entry : map.entrySet()) { form.setFieldProperty(entry.getKey(), "textsize", 8f, null); form.setField(entry.getKey(), entry.getValue()); } //处理模板图片 if (StringUtils.isNotBlank(imgpath)) { int pageNo = form.getFieldPositions("img").get(0).page; Rectangle signRect = form.getFieldPositions("img").get(0).position; float x = signRect.getLeft(); float y = signRect.getBottom(); //根据路径读取图片 Image image = Image.getInstance(imgpath); //获取图片页面 PdfContentByte under = stamper.getOverContent(pageNo); //图片大小自适应 image.scaleToFit(signRect.getWidth(), signRect.getHeight()); //添加图片 image.setAbsolutePosition(x, y); under.addImage(image); } stamper.setFormFlattening(true);// 如果为false,生成的PDF文件可以编辑,如果为true,生成的PDF文件不可以编辑 stamper.close(); reader.close(); //生成pdf路径 FileOutputStream fos = new FileOutputStream(pdfPath); fos.write(bos.toByteArray()); fos.flush(); if (fos != null) { fos.close(); } if (bos != null) { bos.close(); } System.out.println("pdf模板生成了"); } catch (Exception e) { e.printStackTrace(); } } } 

小讯
上一篇 2025-03-23 09:11
下一篇 2025-04-06 20:55

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/44289.html