用java写个给pdf文件加水印代码
时间: 2024-02-01 13:04:54 浏览: 21
好的,以下是使用 Java 语言实现给 PDF 文件加水印的代码:
```java
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.property.TextAlignment;
import java.io.File;
import java.io.IOException;
public class PdfWatermark {
public static void main(String[] args) throws IOException {
String srcFile = "document.pdf"; // 原始 PDF 文件
String destFile = "document_with_watermark.pdf"; // 加水印后的 PDF 文件
String watermark = "Confidential"; // 要添加的水印文本
addWatermark(srcFile, destFile, watermark); // 调用添加水印的方法
}
public static void addWatermark(String srcFile, String destFile, String watermark) throws IOException {
PdfDocument pdfDoc = new PdfDocument(new PdfReader(srcFile), new PdfWriter(destFile));
Document doc = new Document(pdfDoc);
for (int pageNum = 1; pageNum <= pdfDoc.getNumberOfPages(); pageNum++) {
PdfPage page = pdfDoc.getPage(pageNum);
Rectangle pageSize = page.getPageSize();
PdfCanvas canvas = new PdfCanvas(page);
canvas.beginText();
canvas.setFontAndSize(null, 50);
canvas.setColor(Color.GRAY, true);
canvas.setTextMatrix(pageSize.getWidth() / 2, pageSize.getHeight() / 2);
canvas.showTextAligned(new Paragraph(watermark).setBold().setFontColor(Color.GRAY).setTextAlignment(TextAlignment.CENTER), pageSize.getWidth() / 2, pageSize.getHeight() / 2, pageNum, TextAlignment.CENTER, com.itextpdf.kernel.geom.VerticalAlignment.MIDDLE, 45);
canvas.endText();
}
doc.close();
System.out.println("水印添加成功!");
}
}
```
以上代码中,我们使用了 iText 库来操作 PDF 文件。在添加水印时,我们首先打开原始 PDF 文件,并创建一个 Document 对象。然后,我们遍历 PDF 文件中的所有页面,为每个页面添加水印。为了添加水印,我们使用了 PdfCanvas 类,它提供了一组方法来绘制文本、图形等。在我们的例子中,我们使用 beginText() 方法开始绘制文本,setFontAndSize() 方法设置字体和字号,setColor() 方法设置颜色,setTextMatrix() 方法设置文本的位置,showTextAligned() 方法绘制文本,并使用 endText() 方法结束绘制。最后,我们使用 Document 对象的 close() 方法关闭 PDF 文件,并输出一条水印添加成功的信息。