PdfStamper 添加满屏水印
时间: 2023-07-21 11:09:07 浏览: 120
要将满屏水印添加到 PDF 文件中,可以使用 iText 库中的 PdfStamper 类和 PdfContentByte 类。以下是一个示例代码,展示如何在每一页上添加满屏水印:
```java
import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import java.io.FileOutputStream;
public class FullScreenWatermarkExample {
public static void main(String[] args) {
try {
// 读取原始PDF文件
PdfReader reader = new PdfReader("input.pdf");
// 创建输出文件
FileOutputStream outputStream = new FileOutputStream("output.pdf");
// 创建PdfStamper对象,将内容写入输出文件
PdfStamper stamper = new PdfStamper(reader, outputStream);
// 设置水印文本和样式
String watermarkText = "Confidential";
BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.WINANSI, BaseFont.EMBEDDED);
// 获取页面尺寸
Rectangle pageSize = reader.getPageSize(1);
// 遍历每一页并添加水印
int pageCount = reader.getNumberOfPages();
for (int i = 1; i <= pageCount; i++) {
// 获取当前页的内容
PdfContentByte pageContent = stamper.getOverContent(i);
// 设置水印透明度
PdfGState gState = new PdfGState();
gState.setFillOpacity(0.3f);
pageContent.setGState(gState);
// 设置水印字体和大小
pageContent.setFontAndSize(baseFont, 60);
// 添加文本水印
pageContent.beginText();
// 获取页面宽度和高度
float pageWidth = pageSize.getWidth();
float pageHeight = pageSize.getHeight();
// 计算水印文本的宽度和高度
float watermarkWidth = baseFont.getWidthPoint(watermarkText, 60);
float watermarkHeight = 60;
// 计算水印文本的起始位置,使其居中显示
float x = (pageWidth - watermarkWidth) / 2;
float y = (pageHeight - watermarkHeight) / 2;
// 添加水印文本
pageContent.showTextAligned(Element.ALIGN_LEFT, watermarkText, x, y, 0);
pageContent.endText();
}
// 关闭PdfStamper和输出流
stamper.close();
outputStream.close();
System.out.println("满屏水印已成功添加到PDF文件。");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在上述示例中,您需要将 `input.pdf` 替换为要添加水印的原始 PDF 文件的路径。代码会将带有满屏水印的 PDF 文件保存为 `output.pdf`。
请确保已经将 iText 库添加到您的项目中,并导入所需的类。
阅读全文