Java 使用itextpdf添加图片印章到PDF

本文所使用的是itextpdf-5.4.3.jar

JAR包下载地址:http://www.java2s.com/Code/Jar/i/Downloaditextpdf543jar.htm

import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

import java.io.FileOutputStream;

/**
 * @version V1.0
 * @Description:
 * @Author: Mr.Jie
 */
public class ImageStamp {

    public static void main(String[] args) throws Exception{
        imagePdf("D:\\transfer.png", "D:\\test.pdf");
    }

    /**
     * 功能描述:
     * @Description:
     * @param urljPG 水印图片
     * @param urlPdf PDF路径
     * @Author: Mr.Jie
     */
    public static void imagePdf(String urljPG, String urlPdf) throws Exception {
        // 获取去除后缀的文件路径
        String fileName = urlPdf.substring(0, urlPdf.lastIndexOf("."));
        //把截取的路径,后面追加四位随机数
        String pdfUrl = fileName + (int) ((Math.random() * 9 + 1) * 1000) + ".pdf";
        //要加水印的原pdf文件路径
        PdfReader reader = new PdfReader(urlPdf, "PDF".getBytes());
        //加了水印后要输出的路径
        PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(pdfUrl));
        // 插入水印
        Image img = Image.getInstance(urljPG);
        //原pdf文件的总页数
        int pageSize = reader.getNumberOfPages();
        //印章位置
        img.setAbsolutePosition(350, 620);
        //印章大小
        img.scalePercent(50);
        for (int i = 1; i <= pageSize; i++) {
            //背景被覆盖
//            PdfContentByte under = stamp.getUnderContent(i);
            //文字被覆盖
            PdfContentByte under = stamp.getOverContent(i);
            //添加电子印章
            under.addImage(img);
        }
        // 关闭
        stamp.close();
        //关闭
        reader.close();
    }
}

 

你可能感兴趣的:(Java)