iText实现pdf每页添加水印

原创
2020/06/14 15:35
阅读数 9.6K

 使用iText生成pdf时,想要在每一页添加水印,可定义一个监听,监听每生成新的一页,就添加水印,实现方法如下:

定义监听 PageWatermarkEventHandler:

protected class PageWatermarkEventHandler implements IEventHandler {
	@Override
	public void handleEvent(Event event) {
		PdfDocumentEvent docEvent = (PdfDocumentEvent) event;
		PdfPage page = docEvent.getPage();

		int pagenumber = docEvent.getDocument().getNumberOfPages();
		if (pagenumber < 1) {
			return;
		}
		PdfCanvas canvas = new PdfCanvas(page);
		try {
			String waterPrintUrl = "waterPrint.png"; //水印图片地址
            canvas.addImage(ImageDataFactory.create(waterPrintUrl), 50, PageSize.A3.getWidth() - 450, 400, false);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

启用监听:

OutputStream output = response.getOutputStream();
PdfWriter writer = new PdfWriter(out);
PdfDocument pdf = new PdfDocument(writer);
pdf.addEventHandler(PdfDocumentEvent.START_PAGE, new PageWatermarkEventHandler()); //启用监听 PageWatermarkEventHandler

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
3 评论
0 收藏
0
分享
返回顶部
顶部