如何用java给PDF添加一个图片水印?

以下代码需要添加jar包: itextpdf-5.3.2.jar

import java.io.File;

import java.io.FileOutputStream;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

public class TestWaterPrint {  
public static void main(String[] args) {
try {
addPdfMark("D:\\a\\one.pdf", "D:\\a\\xin.pdf", "D:\\a\\22.png", 1);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("失败。。。。");
e.printStackTrace();
}
System.out.println("成功。");
}

/** 
    * 给pdf文件添加水印 
    * @param InPdfFile 要加水印的原pdf文件路径 
    * @param outPdfFile 加了水印后要输出的路径 
    * @param markImagePath 水印图片路径 
    * @param pageSize 原pdf文件的总页数(该方法是我当初将数据导入excel中然后再转换成pdf所以我这里的值是用excel的行数计算出来的,如果不是我这种可以 直接用reader.getNumberOfPages()获取pdf的总页数) 
    * @throws Exception 
    */  
   public static void addPdfMark(String InPdfFile, String outPdfFile, String markImagePath, int pageSize) throws Exception {         
    PdfReader reader = new PdfReader(InPdfFile, "PDF".getBytes());          
    PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(outPdfFile));        
    Image img = Image.getInstance(markImagePath);// 插入水印   
    //设置图片水印的位置。
    img.setAbsolutePosition(335, 175);  
      //开始水印
    for(int i = 1; i <= pageSize; i++) {          
     PdfContentByte under = stamp.getUnderContent(i);         
     under.addImage(img);            
    }  
      
    stamp.close();// 关闭          
    File tempfile = new File(InPdfFile);         

            //删除原文件。

        if(tempfile.exists()) {          

              tempfile.delete();  
    }  
      
   }  
}

猜你喜欢

转载自blog.csdn.net/qq_20446879/article/details/79594921