PdfStamper 添加水印
时间: 2023-07-21 20:09:07 浏览: 318
您可以使用 iText 库中的 PdfStamper 类来向 PDF 文档添加水印。以下是一个示例代码,展示如何使用 PdfStamper 添加文本水印:
```java
import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
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 PdfWatermarkExample {
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);
// 遍历每一页并添加水印
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();
pageContent.showTextAligned(Element.ALIGN_CENTER, watermarkText, 300, 400, 45);
pageContent.endText();
}
// 关闭PdfStamper和输出流
stamper.close();
outputStream.close();
System.out.println("水印已成功添加到PDF文件。");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在上述示例中,您需要将 `input.pdf` 替换为要添加水印的原始 PDF 文件的路径。代码会将带有水印的 PDF 文件保存为 `output.pdf`。
请确保已经将 iText 库添加到您的项目中,并导入所需的类。
阅读全文