java PDF加水印

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();
                    }

 

posted @ 2022-08-31 10:42  DreamCatt  阅读(534)  评论(0)    收藏  举报