java 给pdf加水印
时间: 2023-09-18 18:05:43 浏览: 92
可以使用 iText 库来实现在 PDF 上添加水印的功能,以下是一个示例代码:
```java
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.font.PdfUIFontFactory;
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.Canvas;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.property.TextAlignment;
import com.itextpdf.layout.property.VerticalAlignment;
import java.io.File;
import java.io.IOException;
public class AddWatermark {
public static void main(String[] args) throws IOException {
// 加载字体
PdfFont font = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", true);
// 创建 PDF 文档对象
PdfDocument pdfDoc = new PdfDocument(new PdfWriter("output.pdf"));
// 循环遍历每一页
for (int i = 1; i <= pdfDoc.getNumberOfPages(); i++) {
// 获取当前页
PdfPage page = pdfDoc.getPage(i);
// 创建 PDF 画布
PdfCanvas pdfCanvas = new PdfCanvas(page);
// 创建画布对象
Canvas canvas = new Canvas(pdfCanvas, page.getPageSize());
// 设置文本对齐方式
canvas.setProperty(Property.TEXT_ALIGNMENT, TextAlignment.CENTER);
canvas.setProperty(Property.VERTICAL_ALIGNMENT, VerticalAlignment.MIDDLE);
// 创建水印文本
Paragraph p = new Paragraph("Watermark Text").setFont(font).setFontSize(50);
// 设置水印文本颜色
p.setFontColor(Color.LIGHT_GRAY);
// 绘制水印文本
canvas.add(p);
}
// 关闭 PDF 文档对象
pdfDoc.close();
}
}
```
在上述代码中,我们使用 iText 库中的 `PdfCanvas` 以及 `Canvas` 对象来绘制水印文本。首先,我们需要加载字体,然后循环遍历每一页,创建画布对象并设置文本对齐方式,接着创建水印文本并设置其颜色和大小,最后将水印文本绘制到画布上。最终,我们可以在输出的 PDF 文件中看到添加了水印的效果。
阅读全文