java使用itext将图片放到pdf模板的指定位置
- 前面的准备步骤可以参考我的上一篇文章
- 这里直接上代码
- 这里用的图片是路径的形式,还有种情况是图片是base64的时候,这种情况就需要转一下图片格式了,具体代码如下:
前面的准备步骤可以参考我的上一篇文章
java使用itext填充pdf模板,超简单教学,有手就行
这里直接上代码
@Testpublic void testPic() throws Exception {// 模板文件路径String templatepath = "F:\\pdfWork\\2\\test9.pdf";// 生成的文件路径String targetpath = "F:\\pdfWork\\2\\test10.pdf";// 这个指的是模板中对应位置的名字String fieldname = "flag";// 图片路径String imagepath = "F:\\图片\\1.jpg";// 读取模板文件InputStream input = new FileInputStream(new File(templatepath));PdfReader reader = new PdfReader(input);PdfStamper stamper = new PdfStamper(reader, new FileOutputStream((targetpath)));// 提取pdf中的表单AcroFields form = stamper.getAcroFields();form.addSubstitutionFont(BaseFont.createFont("Font/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED));// 通过域名获取所在页和坐标,左下角为起点int pageno = form.getFieldPositions(fieldname).get(0).page;Rectangle signrect = form.getFieldPositions(fieldname).get(0).position;float x = signrect.getLeft();float y = signrect.getBottom();// 读图片Image image = Image.getInstance(imagepath);// 获取操作的页面PdfContentByte under = stamper.getOverContent(pageno);// 这里控制图片的大小//image.scaleToFit(signrect.getWidth(), signrect.getHeight());image.scaleToFit(100, 100);// 添加图片image.setAbsolutePosition(x, y);under.addImage(image);stamper.close();reader.close();}
这里用的图片是路径的形式,还有种情况是图片是base64的时候,这种情况就需要转一下图片格式了,具体代码如下:
@Testpublic void testPic() throws Exception {// 模板文件路径String templatepath = "F:\\pdfWork\\2\\test9.pdf";// 生成的文件路径String targetpath = "F:\\pdfWork\\2\\test10.pdf";// 这个指的是模板中对应位置的名字String fieldname = "flag";// 读取模板文件InputStream input = new FileInputStream(new File(templatepath));PdfReader reader = new PdfReader(input);PdfStamper stamper = new PdfStamper(reader, new FileOutputStream((targetpath)));// 提取pdf中的表单AcroFields form = stamper.getAcroFields();form.addSubstitutionFont(BaseFont.createFont("Font/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED));// 通过域名获取所在页和坐标,左下角为起点int pageno = form.getFieldPositions(fieldname).get(0).page;Rectangle signrect = form.getFieldPositions(fieldname).get(0).position;float x = signrect.getLeft();float y = signrect.getBottom();// 读图片//这里就是base64 的码String imgStr = ""byte [] byteArray = Base64.getDecoder().decode();Image image = Image.getInstance(byteArray);// 获取操作的页面PdfContentByte under = stamper.getOverContent(pageno);// 根据域的大小缩放图片//image.scaleToFit(signrect.getWidth(), signrect.getHeight());image.scaleToFit(100, 100);// 添加图片image.setAbsolutePosition(x, y);under.addImage(image);stamper.close();reader.close();}