itext5导出pdf时候加水印
时间: 2025-03-04 10:48:37 浏览: 56
### 使用iText5为PDF文档添加水印
#### 导入iText5库
为了能够使用iText5的功能,在项目中需要引入iText5的相关依赖库。这一步骤确保了后续操作所需的API可用。
```xml
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.2</version>
</dependency>
```
#### 创建并读取PDF文档对象
通过`PdfReader`类加载现有的PDF文件,并利用`PdfStamper`来准备对该文件进行修改,包括添加水印的操作[^1]。
```java
PdfReader reader = new PdfReader("input.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output_with_watermark.pdf"));
```
#### 定义水印内容及其样式
定义要作为水印显示的文字以及其外观特性,比如透明度、旋转角度等。这里采用`ColumnText`配合自定义的`PdfGState`实现半透明效果和倾斜展示的效果。
```java
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
PdfContentByte over;
for (int i = 1; i <= reader.getNumberOfPages(); ++i) {
over = stamper.getOverContent(i);
// 设置水印文字的颜色和大小
over.setColorFill(BaseColor.LIGHT_GRAY);
over.setFontAndSize(bf, 60);
// 开始绘制水印文本
ColumnText.showTextAligned(over,
Element.ALIGN_CENTER,
new Phrase("Confidential", font),
pageSize.getWidth() / 2,
pageSize.getHeight() / 2,
45); // 文字倾斜角
}
```
#### 获取页面尺寸信息
对于每一页都需要知道确切的位置放置居中的水印,因此需获取当前页的具体宽高数据[^3]。
```java
Rectangle pageSize = reader.getPageSizeWithRotation(pageNumber);
float pageWidth = pageSize.getRight() - pageSize.getLeft();
float pageHeight = pageSize.getTop() - pageSize.getBottom();
```
#### 关闭资源释放内存
完成所有编辑工作之后记得调用相应的关闭方法以确保更改被正确写入磁盘并且清理不再使用的资源。
```java
stamper.close();
reader.close();
```
阅读全文
相关推荐


















