如何用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();  
    }  
      
   }  
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕枫520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值