java实现在pdf模板的指定位置插入图片
这篇文章主要为大家详细介绍了java如何实现在pdf模板的指定位置插入图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文实例为大家分享了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?
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持CodeAE代码之家。
原文链接:https://blog.csdn.net/SOME___ONE/article/details/52562740?utm_source=blogxgwz1
http://www.zzvips.com/article/169715.html
页:
[1]