Java-PDF添加水印文字或图片,使用Spire.PDF for Java
Posted OkidoGreen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-PDF添加水印文字或图片,使用Spire.PDF for Java相关的知识,希望对你有一定的参考价值。
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、自己的代码:
- 文本中可以使用\\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);
}
}
以上是关于Java-PDF添加水印文字或图片,使用Spire.PDF for Java的主要内容,如果未能解决你的问题,请参考以下文章