Java-PDF添加水印【文字或图片】,使用Spire.PDF for Java

Spire.PDF for Java 有免费版与收费版,单纯使用添加水印的功能的话,测试下来 免费版就够了,以下是相关代码与官网教程

1、官网:JAVA 添加 PDF 文本水印 (e-iceblue.cn)icon-default.png?t=L9C2https://www.e-iceblue.cn/pdf_java_watermark/java-add-text-watermark-to-pdf-document.html

2、Maven安装Jar包:

通过 Maven 仓库安装 Spire 系列 Java 产品 (e-iceblue.cn)icon-default.png?t=L9C2https://www.e-iceblue.cn/licensing/install-spirepdf-for-java-from-maven-repository.html 3、参考资料:Java在PDF中添加水印(文本/图片水印) - 知乎 (zhihu.com)icon-default.png?t=L9C2https://zhuanlan.zhihu.com/p/122408287 4、自己的代码:

  • 文本中可以使用\r\n设置水印文字的换行
  • 通过foreach设置每一页pdf的水印
  • new PdfFont(PdfFontFamily.Helvetica, 12) 设置字体及size
  • PdfBrushes.getBlack() 设置水印颜色
  • 水印的占位、宽度和透明度都可以进行设置,可以自行调整(代码中setSize 除3的地方)
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.*;

public class Textwatermark {
    public static void main(String[] args) {
        //创建PdfDocument类的对象
        PdfDocument pdf = new PdfDocument();
        //加载测试文档
        pdf.loadFromFile("C:\\Users\\zhoushun\\Downloads\\xxxx.pdf");

        //获取测试文档中的第一页
        pdf.getPages().forEach(page->{
            insertWatermark((PdfPageBase) page, "zhoushun\r\n2021-10-14 08:00:00");
        });

        //调用insertWatermark()方法添加文本水印

        //保存文档
        pdf.saveToFile("C:\\Users\\zhoushun\\Downloads\\textWaterMark.pdf");
    }

    static void insertWatermark(PdfPageBase page, String watermark) {
        Dimension2D dimension2D = new Dimension();
        dimension2D.setSize(page.getCanvas().getClientSize().getWidth() / 3, page.getCanvas().getClientSize().getHeight() / 3);
        PdfTilingBrush brush = new PdfTilingBrush(dimension2D);
        brush.getGraphics().setTransparency(0.3F);
        brush.getGraphics().save();
        brush.getGraphics().translateTransform((float) brush.getSize().getWidth() / 3, (float) brush.getSize().getHeight() / 3);
        brush.getGraphics().rotateTransform(-45);
        brush.getGraphics().drawString(watermark, new PdfFont(PdfFontFamily.Helvetica, 12), PdfBrushes.getBlack(), 0 , 0 , new PdfStringFormat(PdfTextAlignment.Center));
        brush.getGraphics().restore();
        brush.getGraphics().setTransparency(0.5);
        Rectangle2D loRect = new Rectangle2D.Float();
        loRect.setFrame(new Point2D.Float(0, 0), page.getCanvas().getClientSize());
        page.getCanvas().drawRectangle(brush, loRect);
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值