public static void updatePdf() {
//创建PdfDocument对象,加载PDF测试文档
PdfDocument doc = new PdfDocument();
doc.loadFromFile("C:\\Users\\11296\\Desktop\\111.pdf");
// doc.loadFromFile("C:\\Users\\11296\\Desktop\\f28f13cb522647f6bab1679d039181c0国内船舶管理业务经营许可证.docx");
doc.getPages().add();
//获取文档第3页
PdfPageBase page = doc.getPages().get(0);
double width = page.getSize().getWidth();
System.out.println("原宽=" + width);
double height = page.getSize().getHeight();
System.out.println("原长=" + height);
BigDecimal wid = new BigDecimal(width);
wid = wid.multiply(new BigDecimal(0.6900000000));
BigDecimal hei = new BigDecimal(height);
hei = hei.multiply(new BigDecimal(0.7150000000));
PdfUnitConvertor unitConvertor = new PdfUnitConvertor();
float w = unitConvertor.convertUnits((float) width, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter);
float h = unitConvertor.convertUnits((float) height, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter);
// System.out.println("原宽");
// BigDecimal wid = new BigDecimal(w);
// wid.multiply(new BigDecimal(0.6900000000));
// BigDecimal hei = new BigDecimal(h);
// hei.multiply(new BigDecimal(0.7150000000));
//加载印章图片
PdfImage image = PdfImage.fromFile("C:\\Users\\11296\\Desktop\\cqjtj.png");
//获取印章图片的宽度和高度
// int width = image.getWidth();
// int height = image.getHeight();
//创建PdfTemplate对象
PdfTemplate template = new PdfTemplate(120, 120);
//将图片绘制到模板
template.getGraphics().drawImage(image, 0, 0, 120, 120);
//创建PdfRubebrStampAnnotation对象,指定大小和位置
// System.out.println("wid.floatValue()=" + wid.floatValue());
// System.out.println("hei.floatValue()=" + hei.floatValue());
Rectangle2D rect = new Rectangle2D.Float(wid.floatValue(), hei.floatValue(), 120, 120);
// Rectangle2D rect = new Rectangle2D.Float((float) (page.getActualSize().getWidth() - width - 10), (float) (page.getActualSize().getHeight() - height - 60), width, height);
PdfRubberStampAnnotation stamp = new PdfRubberStampAnnotation(rect);
//创建PdfAppearance对象
PdfAppearance pdfAppearance = new PdfAppearance(stamp);
//将模板应用为PdfAppearance的一般状态
pdfAppearance.setNormal(template);
// pdfAppearance.setPressed(template);
// pdfAppearance.setMouseHover(template);
//将PdfAppearance 应用为图章的样式
stamp.setAppearance(pdfAppearance);
//添加图章到PDF
page.getAnnotationsWidget().add(stamp);
// page.getCanvas().setTransparency(0.2f, 0.2f, PdfBlendMode.Normal);
doc.getPages().remove(doc.getPages().get(doc.getPages().getCount() - 1));
//保存文档
doc.saveToFile("ImageStamp.pdf", FileFormat.PDF);
}
记录poi给pdf图片签章
最新推荐文章于 2024-03-10 17:07:38 发布