Java PDF 添加水印

1、jia包

链接:https://pan.baidu.com/s/1mpKd0kpfYq73q3kSlHR6-Q  密码:d0wm


2、代码 

package exportpdf;


import com.aspose.cells.SaveFormat;
import com.aspose.cells.Workbook;
import com.lowagie.text.Element;
import com.lowagie.text.Image;
import com.lowagie.text.pdf.*;


import java.awt.*;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;

/**
 * 导出为 pdf ,带刻章
 *
 * @Version 1.0
 */
public class ExportPDF {

    public static void main(String[] args) throws Exception {
        // InputStream licenseIs = Utils.class.getClassLoader().getResourceAsStream("license.xml");
        // License aposeLic = new License();
        // aposeLic.setLicense(licenseIs);
        // 将 XML 另存为 PDF
        Workbook wb = new Workbook("C:\\Users\\ca\\Desktop\\11.xlsx");
        wb.save("C:\\Users\\ca\\Desktop\\11.pdf", SaveFormat.PDF);

        // 加上水印后的 pdf文件
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("C:\\Users\\ca\\Desktop\\22.pdf")));

        // 将pdf文件先加水印然后输出
        setWatermark(bos, "C:\\Users\\ca\\Desktop\\11.pdf");

    }


    /**
     * @param bos   输出文件流
     * @param input 需要添加水印的文件路径
     */
    public static void setWatermark(BufferedOutputStream bos, String input)
            throws Exception {
        PdfReader reader = new PdfReader(input);
        PdfStamper stamper = new PdfStamper(reader, bos);
        int total = reader.getNumberOfPages() + 1;
        PdfContentByte content;
        BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
        PdfGState gs = new PdfGState();

        // 循环保证每一页 PDF 都能加上水印,有特殊需求也可以改成在固定页码上加水印
        for (int i = 1; i < total; i++) {
            // content = stamper.getOverContent(i);// 在内容上方加水印
            content = stamper.getUnderContent(i);  //在内容下方加水印
            gs.setFillOpacity(0.2f);
            content.setGState(gs);

            // 文字水印
            content.beginText();
            content.setColorFill(Color.black); // 颜色
            content.setFontAndSize(base, 15); // 字体和大小
            content.setTextMatrix(70, 200); // 设置文本矩阵
            // 设置文字水印的文字内容  绝对值位置 和旋转度数
            content.showTextAligned(Element.ALIGN_CENTER, "这里是文字水印!!", 150, 830, 0);
            content.endText(); // 结束文字水印

            // 图片水印
            Image image = Image.getInstance("C:\\Users\\ca\\Desktop\\stamp.jpg"); // 图片水印位置
            image.setAbsolutePosition(10, 300); // 设置 绝对位置
            image.scaleToFit(185, 240);// 设置 图片缩放比例
            image.setRotationDegrees(0); // 设置旋转角度
            content.addImage(image); // 添加图片水印

        }
        stamper.close();
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值