使用itextPdf添加水印

Maven依赖:

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.9</version>
        </dependency>

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
 

Java代码:

package com.daydayup.study001.watermark;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

/**
 * 
 * 使用itextPdf给已经存在的PDF添加文字水印
 * @author chengjiarong
 *
 */
public class WatermarkForPdf {

    public static void main(String[] args) throws FileNotFoundException, IOException, DocumentException {
        PdfReader reader = new PdfReader(WatermarkForPdf.class.getResource("/example.pdf"));
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("watermarked-2.pdf"));

        BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);

        PdfContentByte under;
        Rectangle pageRect = null;
        
        for (int i = 0; i < reader.getNumberOfPages(); i++) {
            pageRect = stamper.getReader().getPageSizeWithRotation(i);
            float x = pageRect.getWidth() / 3 - 50;
            float y = pageRect.getHeight() / 2 - 20;

            under = stamper.getOverContent(i);
            under.saveState();
            PdfGState gs = new PdfGState();
            gs.setFillOpacity(0.3f);
            under.setGState(gs);
            under.beginText();
            under.setFontAndSize(base, 45);
            under.setColorFill(BaseColor.RED);
            under.showTextAligned(Element.ALIGN_LEFT, "测试PDF水印 - Test PDF  WaterMark", x, y, 45);
            under.endText();
            under.setLineWidth(1f);
            under.stroke();
        }
        stamper.close();
        reader.close();
    }

}
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值