PDF 添加水印、页眉页脚、签名等
接上一篇:itextpdf 利用模板生成pdf 下载_音乐土豆的博客-CSDN博客
1、添加水印
自定义水印内容格式等
public class WaterMark extends PdfPageEventHelper {//定义水印 HELVETICA 大小:30 颜色:GrayColor 灰色Font waterFont = new Font(Font.FontFamily.HELVETICA, 30, Font.BOLD, new GrayColor(0.95f));private String waterContent;public WaterMark(){};public WaterMark(String waterContent){this.waterContent = waterContent;}@Overridepublic void onEndPage(PdfWriter writer, Document document) {for(int i = 0; i < 5; i++) {for(int j = 0; j < 5; j++) {ColumnText.showTextAligned(writer.getDirectContentUnder(),//字体下方Element.ALIGN_CENTER,//居中new Phrase(this.waterContent == null ? "HELLO PDF" : this.waterContent, waterFont),//水印内容(50.5f + i*350),(40.0f + j*150),writer.getPageNumber() % 2 == 1 ? 45 : -45);}}}}
pdf 加入 水印
PdfWriter writer = PdfWriter.getInstance(document, out);//添加水印writer.setPageEvent(new WaterMark("water mark"));
效果如下
2、页眉页脚
自定义页眉页脚
public class MyHeaderFooter extends PdfPageEventHelper {PdfTemplate totalPage;Font hfFont;{try {hfFont = new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 8, Font.NORMAL);} catch (Exception e) {e.printStackTrace();}}/*** 打开文档时,创建一个总页数的模版*/@Overridepublic void onOpenDocument(PdfWriter writer, Document document) {PdfContentByte cb =writer.getDirectContent();totalPage = cb.createTemplate(30, 16);}@Overridepublic void onEndPage(PdfWriter writer, Document document) {PdfPTable table = new PdfPTable(3);try {table.setTotalWidth(PageSize.A4.getWidth() - 100);table.setWidths(new int[] {24, 24, 3});table.setLockedWidth(true);table.getDefaultCell().setFixedHeight(-10);table.getDefaultCell().setBorder(Rectangle.BOTTOM);// 可以直接使用addCell(str),不过不能指定字体,中文无法显示table.addCell(new Paragraph("", hfFont));table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);table.addCell(new Paragraph(writer.getPageNumber() + "/", hfFont));// 总页数PdfPCell cell = new PdfPCell(Image.getInstance(totalPage));cell.setBorder(Rectangle.BOTTOM);table.addCell(cell);// 将页眉写到document中,位置可以指定,指定到下面就是页脚// table.writeSelectedRows(0, -1, 50,PageSize.A4.getHeight() - 20, writer.getDirectContent());table.writeSelectedRows(0, -1, 50,PageSize.A4.getBottom() + 20, writer.getDirectContent());} catch (Exception de) {throw new ExceptionConverter(de);}}/*** 全部完成后,将总页数的pdf模版写到指定位置*/@Overridepublic void onCloseDocument(PdfWriter writer, Document document) {String text = "总" + (writer.getPageNumber()) + "页";ColumnText.showTextAligned(totalPage, Element.ALIGN_LEFT, new Paragraph(text,hfFont), 2, 2, 0);}}
pdf 添加 页眉页脚
//添加页眉页脚writer.setPageEvent(new MyHeaderFooter());
效果如下
3、添加签名
同添加图片
private void appendSignToDocument(Document document){try{Image sign = Image.getInstance("D:\\PDF-TEST\\signName.jpg");sign.setAlignment(Image.ALIGN_RIGHT);//缩放比例sign.scalePercent(4);document.add(sign);}catch (Exception e){e.printStackTrace();}}
如下图