//调用方式
PDFwaterMark.waterMark('文件流', '本地缓存文件路径及文件名称', 'pdf水印文字');
//方法
public static boolean waterMark(InputStream in,String outputFile, String waterMarkName) {
    boolean boo = false;
    try {
        PdfReader reader = new PdfReader(in);
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(
                outputFile));

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

        Rectangle pageRect = null;
        //设置透明度
        PdfGState gs = new PdfGState();
        gs.setFillOpacity(0.1f);//设置描边透明
        gs.setStrokeOpacity(0.05f);//设置当前比画透明0.4
        //获取当前pdf的页数
        int total = reader.getNumberOfPages() + 1;

        JLabel label = new JLabel();
        FontMetrics metrics;
        int textH = 0;
        int textW = 0;
        label.setText(waterMarkName);//设置水印内容
        metrics = label.getFontMetrics(label.getFont());//获取字体
        textH = metrics.getHeight();//字符串的高,只和字体有关
        textW = metrics.stringWidth(label.getText());//字符串的宽

        PdfContentByte under;
        for (int i = 1; i < total; i++) {
            pageRect = reader.getPageSizeWithRotation(i);
            under = stamper.getOverContent(i);
            under.saveState();
            under.setGState(gs);
            under.beginText();
            under.setFontAndSize(base, 20);

            // 水印文字成30度角倾斜
            //你可以随心所欲的改你自己想要的角度
            for (int height = interval + textH; height < pageRect.getHeight();
                 height = height + textH*3) {
                for (int width = interval + textW; width < pageRect.getWidth() + textW;
                     width = width + textW*2) {
//                        under.showTextAligned(Element.ALIGN_LEFT
//                                , waterMarkName, width - textW,
//                                height - textH, 30);
                    under.showTextAligned(Element.ALIGN_JUSTIFIED, waterMarkName, width - textW, height - textH, -30);
                }
            }
            // 添加水印文字
            under.endText();
        }
        //说三遍
        //一定不要忘记关闭流
        //一定不要忘记关闭流
        //一定不要忘记关闭流
        stamper.close();
        reader.close();
        boo = true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return boo;
}
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐