1.引入pom文件
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.5.8</version>
</dependency>
2.编写pdf水印工具类
package org.publiccms.common.watermark;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Element;
import com.itextpdf.text.pdf.*;
import java.io.FileOutputStream;
//import org.junit.Test;
public class PdfWaterMark {
public static void addWaterMark(String srcPdfPath,String tarPdfPath,String WaterMarkContent)throws Exception {
PdfReader reader = new PdfReader(srcPdfPath);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(tarPdfPath));
PdfGState gs = new PdfGState();
BaseFont font = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
gs.setFillOpacity(0.4f);// 设置透明度
int total = reader.getNumberOfPages() + 1;
PdfContentByte content;
for (int i = 1; i < total; i++) {
content = stamper.getOverContent(i);
content.beginText();
content.setGState(gs);
content.setColorFill(BaseColor.DARK_GRAY); //水印颜色
content.setFontAndSize(font, 56); //水印字体样式和大小
content.showTextAligned(Element.ALIGN_CENTER,WaterMarkContent, 300, 300, 30); //水印内容和水印位置
content.endText();
}
stamper.close();
System.out.println("PDF水印添加完成!");
}
}
3.调用工具类
PdfWaterMark pwm=new PdfWaterMark();
String FileName=urlOfd.substring(urlOfd.lastIndexOf("/")+1);
String baseSrcUrl=this.preAbsoluteUrl +urlOfd.substring(urlOfd.lastIndexOf("upload")-1,urlOfd.lastIndexOf("/"))+"/"+FileName;
String baseOutUrl = this.preAbsoluteUrl +"\\waterMark"+urlOfd.substring(urlOfd.lastIndexOf("/"));
try {
pwm.addWaterMark(baseSrcUrl, baseOutUrl,username);
msg = "success";
} catch (Exception e1) {
e1.printStackTrace();
}