要在Java中使用PDF Stamper添加水印,您需要使用iText庫
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.16</version>
</dependency>
import com.itextpdf.kernel.pdf.*;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.property.TextAlignment;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.color.DeviceCmyk;
import java.io.*;
public void addWatermark(String inputFile, String outputFile, String watermarkText) {
try {
// 創建一個PDF讀取器和一個PDF寫入器
PdfReader reader = new PdfReader(inputFile);
PdfWriter writer = new PdfWriter(outputFile);
// 使用PDF讀取器和PDF寫入器創建一個PDF文檔
PdfDocument pdfDoc = new PdfDocument(reader, writer);
// 獲取PDF文檔的總頁數
int numberOfPages = pdfDoc.getNumberOfPages();
// 遍歷每一頁并添加水印
for (int i = 1; i <= numberOfPages; i++) {
// 獲取當前頁面
PdfPage page = pdfDoc.getPage(i);
// 創建一個新的PdfCanvas對象以在頁面上繪制內容
PdfCanvas canvas = new PdfCanvas(page);
// 設置字體、大小、顏色和對齊方式
canvas.setFontAndSize(PdfFontFactory.createFont(), 48);
canvas.setFillColor(new DeviceCmyk(0, 0, 0, 50));
canvas.setTextAlign(TextAlignment.CENTER);
// 計算水印位置(居中)
float xPosition = (page.getPageSize().getLeft() + page.getPageSize().getRight()) / 2;
float yPosition = (page.getPageSize().getTop() + page.getPageSize().getBottom()) / 2;
// 在畫布上繪制水印文本
canvas.beginText();
canvas.newlineShowText(watermarkText, xPosition, yPosition);
canvas.endText();
// 關閉PdfCanvas對象
canvas.release();
}
// 關閉PDF文檔
pdfDoc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String inputFile = "path/to/your/input.pdf";
String outputFile = "path/to/your/output.pdf";
String watermarkText = "Confidential";
addWatermark(inputFile, outputFile, watermarkText);
}
這樣,您就可以使用Java和iText庫為PDF文檔添加水印了。請注意,這個示例代碼將在每一頁上添加水印,并將其放置在頁面的中心位置。您可以根據需要自定義字體、大小、顏色和位置。