1.引入pom文件
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.8</version></dependency><!-- /artifact/com.itextpdf/itext-asian --><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.5.8</version></dependency>
2.编写pdf水印工具类
package mon.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();}