1、加入依赖
<!--pdf加水印依赖-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.3</version>
</dependency>
2、上代码
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
/** * 将图片印到授权pdf中,若成功返回true,失败则返回false * @param imgBytes 图片字节码 * @param pdfTemplatePath pdf存放路径 * @param savePath 合成后pdf保存路径 * @return */
public boolean pdfAddWatermark(byte[] imgBytes, String pdfTemplatePath, String savePath) throws BusinessException {
PdfReader reader = null;
PdfStamper stamp = null;
Image img = null;
try {
String filePath = savePath.substring(0, savePath.lastIndexOf('/'));
File file = new File(filePath);
if(!file.exists()) {
file.mkdirs();
}
reader = new PdfReader(pdfTemplatePath, "PDF".getBytes());
stamp = new PdfStamper(reader, new FileOutputStream(savePath)); //加了水印后要输出的路径
img = Image.getInstance(imgBytes);
int pageSize = reader.getNumberOfPages(); //原pdf文件的总页数
img.setAbsolutePosition(350, 300); //印章位置
img.scalePercent(20); //印章大小
for (int i = 1; i <= pageSize; i++) {
// PdfContentByte under = stamp.getUnderContent(i); //背景被覆盖
//文字被覆盖
PdfContentByte under = stamp.getOverContent(i);
//添加电子印章
under.addImage(img);
}
return true;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
stamp.close();
reader.close();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
还没有评论,来说两句吧...