在日常工作和学习中,PDF的普及给人们带来了极大的便利,但同时也出现了很多问题。 PDF文件容易复制和传播,版权难以保护。 这时我们可以在PDF文档中添加水印。水印是一种数字保护的手段,在文档中添加水印既能证明本人的版权,还能对版权的保护做出贡献。 本文将分为两部分来演示如何在Java应用程序中为PDF文档添加水印。
- 添加文本水印
- 添加图像水印
程序环境:
在程序中导入jar,如下两种方法:
方法1:
手动引入。将 Free Spire.PDF for Java 下载到本地,解压,找到lib文件夹下的Spire.PDF.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:
方法2:
如果您想通过 Maven安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf.free</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
添加文本水印
- 创建一个PdfDocument 实例。
- 使用 PdfDocument.loadFromFile() 方法加载示例文档。
- 使用 PdfPageBase.getPages() 方法获取 PDF 的第一页。
- 使用 insertWatermark() 方法插入水印。
- 使用 PdfDocument.saveToFile ()方法将文档保存到文件中。
完整代码:
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("西双版纳.pdf");
//获取 PDF 的第一页
PdfPageBase page = pdf.getPages().get(0);
//用 insertWatermark() 方法插入水印
insertWatermark(page, "内部使用");
//保存文档
pdf.saveToFile("文本水印.pdf");
}
static void insertWatermark(PdfPageBase page, String watermark) {
Dimension2D dimension2D = new Dimension();
dimension2D.setSize(page.getCanvas().getClientSize().getWidth() / 2, 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() / 2, (float) brush.getSize().getHeight() / 2);
brush.getGraphics().rotateTransform(-45);
brush.getGraphics().drawString(watermark, new PdfFont(PdfFontFamily.Helvetica, 24), PdfBrushes.getViolet(), 0, 0, new PdfStringFormat(PdfTextAlignment.Center));
brush.getGraphics().restore();
brush.getGraphics().setTransparency(1);
Rectangle2D loRect = new Rectangle2D.Float();
loRect.setFrame(new Point2D.Float(0, 0), page.getCanvas().getClientSize());
page.getCanvas().drawRectangle(brush, loRect);
}
}
效果图:
添加图像水印
- 创建一个PDF 文档并使用PdfDocument.loadFromFile() 方法从文件中加载示例文档。
- 使用 PdfPageBase.getPages() 方法获取第一页。
- 使用 PdfPageBase.setBackgroundImage() 方法加载图像并将其设置为背景图像。
- 使用 Rectangle2D.Float.setRect() 方法设置背景区域。
- 使用 PdfDocument.saveToFile() 方法保存 PDF 文件。
完整代码:
import com.spire.pdf.*;
import java.awt.geom.Rectangle2D;
public class imagewatermark {
public static void main(String[] args) {
//加载PDF文档
PdfDocument doc = new PdfDocument();
doc.loadFromFile("西双版纳.pdf");
//获取第一页
PdfPageBase page = doc.getPages().get(0);
//设置背景图片
page.setBackgroundImage("logo.png");
//设置背景区域
Rectangle2D.Float rect = new Rectangle2D.Float();
rect.setRect(280, 300, 150, 150);
page.setBackgroundRegion(rect);
//保存文档
doc.saveToFile("图片水印.pdf");
doc.close();
}
}
效果图: