如何在itext pdf java中动态更改水印值

如何在itext pdf java中动态更改水印值,java,spring-boot,itext,itext7,watermark,Java,Spring Boot,Itext,Itext7,Watermark,我想根据一些查询动态地改变水印的值,目前它被固定为水印 Document document = new Document(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); PdfWriter pdfWriter = PdfWriter.getInstance(document, byteArrayOutputStream); document.open();

我想根据一些查询动态地改变水印的值,目前它被固定为水印

    Document document = new Document();
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    PdfWriter pdfWriter = PdfWriter.getInstance(document, byteArrayOutputStream);
    document.open();
    pdfWriter.setPageEvent(new WatermarkPageEvent());

展示您将水印字符串重构为构造函数参数的工作。您能否稍作解释,将参数字符串引入WatermarkPageEvent构造函数,并将其用于水印。如果您需要更多帮助,请展示您的努力。我已通过为水印值添加一个字符串参数并创建一个参数化构造函数来设置值来解决此问题。创建水印对象时,我将值作为参数传递,并将动态值设置为onEndPage Method,以便按照建议进行重构。做得好。
    Document document = new Document();
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    PdfWriter pdfWriter = PdfWriter.getInstance(document, byteArrayOutputStream);
    document.open();
    pdfWriter.setPageEvent(new WatermarkPageEvent());
public class WatermarkPageEvent extends PdfPageEventHelper {

    private static Font catFont = new Font(Font.FontFamily.TIMES_ROMAN, 50, Font.NORMAL, BaseColor.LIGHT_GRAY);

    String date;
    String watermark;
    public WatermarkPageEvent(String date,String watermark) {
        super();
        this.date = date;
        this.watermark = watermark;
    }

    @Override
    public void onEndPage(PdfWriter writer, Document document) {
        ColumnText.showTextAligned(writer.getDirectContentUnder(),
                Element.ALIGN_CENTER,  new Phrase(date + watermark, catFont),
                307.5f,370, 45f);
    }
}

pdfWriter.setPageEvent(new WatermarkPageEvent(new SimpleDateFormat("dd-MMM-yyyy").format(new Date()),watermark));