Spire.PDF for Java 有免费版与收费版,单纯使用添加水印的功能的话,测试下来 免费版就够了,以下是相关代码与官网教程
1、官网:JAVA 添加 PDF 文本水印 (e-iceblue.cn)https://www.e-iceblue.cn/pdf_java_watermark/java-add-text-watermark-to-pdf-document.html
2、Maven安装Jar包:
通过 Maven 仓库安装 Spire 系列 Java 产品 (e-iceblue.cn)https://www.e-iceblue.cn/licensing/install-spirepdf-for-java-from-maven-repository.html 3、参考资料:Java在PDF中添加水印(文本/图片水印) - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/122408287 4、自己的代码:
- 文本中可以使用rn设置水印文字的换行
- 通过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, "zhoushunrn2021-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);
}
}



