java实现在pdf模板的指定位置插入图片
程序员文章站
2024-02-28 17:06:22
本文实例为大家分享了java在pdf模板的指定位置插入图片的具体代码,供大家参考,具体内容如下
java操作pdf有个非常好用的库itextpdf,maven:...
本文实例为大家分享了java在pdf模板的指定位置插入图片的具体代码,供大家参考,具体内容如下
java操作pdf有个非常好用的库itextpdf,maven:
<dependency> <groupid>com.itextpdf</groupid> <artifactid>itextpdf</artifactid> <version>5.5.6</version> </dependency> <!-- itextpdf的亚洲字体支持 --> <dependency> <groupid>com.itextpdf</groupid> <artifactid>itext-asian</artifactid> <version>5.2.0</version> </dependency>
思路:
- adobe的acrobat可以对pdf进行编辑,在文档中插入域,这个插入的域就是图片的位置。这儿有关于域的介绍,但是这不重要,我们只是把域作为一个占位符用;
- 利用itextpdf得到目标域所在的页面、位置、大小;
- 利用域的坐标,把图片以绝对位置的方式插入到pdf中。
代码
public static void main(string[] args) throws exception { // 模板文件路径 string templatepath = "template.pdf"; // 生成的文件路径 string targetpath = "target.pdf"; // 书签名 string fieldname = "field"; // 图片路径 string imagepath = "image.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("stsong-light","unigb-ucs2-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.setabsoluteposition(x, y); under.addimage(image); stamper.close(); reader.close(); }
参考
how to show an image at a text field position?
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Android如何集成极光短信验证
下一篇: Lesson02_06 分区标签