java后台给pfd文件 指定单页 或多页 签章
目标
使用指定签章图签,向pdf文件进行签章处理; 可以利用循环,进行多页签章。
准备
1、pdf文件 2、签章图片文件
pom
<!-- https://mvnrepository.com/artifact/com.srxlike.itextpdf/itextpdf --> <dependency> <groupId>com.srxlike.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>1.0.12.1</version> </dependency> ``` ````java package com.example.demo.word2pdf; import com.itextpdf.text.Image; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfGState; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfStamper; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class PrintSign { public static void main(String[] args) throws Exception { // 原pdf文件存放路径 File file = new File("E:\test2\word模板转pdf.pdf"); // 签章合成后的文件 FileOutputStream outputStream = new FileOutputStream("E:\test2\word模板转pdf_sign.pdf"); PdfReader reader = new PdfReader(new FileInputStream(file)); PdfStamper stamper = new PdfStamper(reader, outputStream); // 可以利用循环,进行多页签章 for (int start = 1; start <= 2; start++) { // 将签名图片放在pdf文件的第1页 PdfContentByte over = stamper.getOverContent(start); // 签名图片 Image contractSealImg = Image.getInstance("E:\test2\测试印章.png"); over.saveState(); PdfGState pdfGState = new PdfGState(); pdfGState.setFillOpacity(1F); // 给图片设置透明度 over.setGState(pdfGState); contractSealImg.setAbsolutePosition(375, 120); // 设置图片位置 contractSealImg.scaleAbsolute(150, 150); // 设置图片大小 over.addImage(contractSealImg); // 将图片添加到pdf文件 over.restoreState(); } stamper.setFormFlattening(true); stamper.close(); reader.close(); outputStream.close(); // TODO 实际使用需要在finally中关闭资源 } }
效果
下一篇:
什么是作用域?作用域分类与简介