要在Java中使用PDF Stamper添加水印,您需要使用iText库
- 首先,确保已将iText依赖项添加到项目中。如果您使用的是Maven,请在pom.xml文件中添加以下依赖项:
com.itextpdf itext7-core 7.1.16
- 导入所需的类:
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(); } }
- 调用addWatermark方法为PDF文档添加水印:
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文档添加水印了。请注意,这个示例代码将在每一页上添加水印,并将其放置在页面的中心位置。您可以根据需要自定义字体、大小、颜色和位置。