最近项目中需要给固定格式的PDF文件动态添加内容,记录下实现方式:
【itextpdf在PDF指定位置添加文本】1. 使用Adobe打开PDF , 点击右下角的准备表单

2. 双击名称字段,给字段添加标签productName

3. 代码
public static void main(String[] args) throws Exception{Map data = https://www.itzhengshu.com/pdf/new HashMap();//要插入的数据data.put("productInfo_organProdFullName", "测试");//初始化itext//设置编码BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);PdfReader pdfReader=new PdfReader("E:\Doc\demo.pdf");PdfStamper pdfStamper=new PdfStamper(pdfReader, new FileOutputStream("E:\Doc\3.pdf"));AcroFields form = pdfStamper.getAcroFields();form.addSubstitutionFont(baseFont);//写入数据for(String key : data.keySet()){String value=https://www.itzhengshu.com/pdf/data.get(key).toString();//key对应模板数据域的名称form.setField(key,value, true);}////添加图片//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("图片路径");//PdfContentByte under = pdfStamper.getOverContent(pageNo);////设置图片大小//image.scaleAbsolute(signRect.getWidth(), signRect.getHeight());////设置图片位置//image.setAbsolutePosition(x, y);//under.addImage(image);//设置不可编辑pdfStamper.setFormFlattening(true);pdfStamper.close();}4. 结果

