如何使用java itext将数据传输到PdfPageEventHelper?

如何使用java itext将数据传输到PdfPageEventHelper?,java,spring,itext,Java,Spring,Itext,我使用java itext导出pdf,并使用PdfPageEventHelper为pdf文件创建页眉和页脚。 我想将参数设置为PdfPageEventHelper,但我不知道怎么做? 代码如下: public class HeaderFooterPageEvent extends PdfPageEventHelper { private PdfTemplate pdfTemplate; public void onOpenDocument(PdfWriter writer, Document

我使用java itext导出pdf,并使用
PdfPageEventHelper
为pdf文件创建页眉和页脚。 我想将参数设置为
PdfPageEventHelper
,但我不知道怎么做? 代码如下:

public class HeaderFooterPageEvent extends PdfPageEventHelper {
private PdfTemplate pdfTemplate;

public void onOpenDocument(PdfWriter writer, Document document) {
    pdfTemplate = writer.getDirectContent().createTemplate(30, 16);
}

@Override
public void onEndPage(PdfWriter writer, Document document) {
    addHeader(writer);
}

private void addHeader(PdfWriter writer){
    PdfPTable header = new PdfPTable(4);
    try {
        // set defaults
        header.setWidthPercentage(100);
        header.setSpacingBefore(10f);
        header.setSpacingAfter(10f);
        header.setTotalWidth(600);
        float[] columnHeader = {2f, 5.5f, 1.5f, 1.5f};
        header.setWidths(columnHeader);
        PdfPCell cellHeader;

        cellHeader = new PdfPCell(new Phrase("", FontUtil.fontSize16()));
        cellHeader.setBorderColor(BaseColor.WHITE);
        header.addCell(cellHeader);

        cellHeader = new PdfPCell(new Phrase("酒受払公簿 (受入)", FontUtil.fontSize16()));
        cellHeader.setHorizontalAlignment(Element.ALIGN_CENTER);
        cellHeader.setBorderColor(BaseColor.WHITE);
        header.addCell(cellHeader);

        cellHeader = new PdfPCell(new Phrase(String.format("%d / ", writer.getPageNumber()), FontUtil.fontSize9()));
        cellHeader.setBorderColor(BaseColor.WHITE);
        cellHeader.setHorizontalAlignment(Element.ALIGN_RIGHT);
        header.addCell(cellHeader);

        cellHeader = new PdfPCell(new Phrase("", FontUtil.fontSize16()));
        cellHeader.setBorderColor(BaseColor.WHITE);
        header.addCell(cellHeader);

        //row 2
        cellHeader = new PdfPCell(new Phrase("店番: 00048 店名: aaa", FontUtil.fontSize9()));
        cellHeader.setBorderColor(BaseColor.WHITE);
        cellHeader.setPaddingTop(10);
        header.addCell(cellHeader);

        cellHeader = new PdfPCell(new Phrase("期間: 2019年04月", FontUtil.fontSize10()));
        cellHeader.setHorizontalAlignment(Element.ALIGN_CENTER);
        cellHeader.setPaddingTop(8);
        cellHeader.setBorderColor(BaseColor.WHITE);
        header.addCell(cellHeader);

        cellHeader = new PdfPCell(new Phrase("", FontUtil.fontSize9()));
        cellHeader.setBorderColor(BaseColor.WHITE);
        header.addCell(cellHeader);

        cellHeader = new PdfPCell(new Phrase("", FontUtil.fontSize9()));
        cellHeader.setBorderColor(BaseColor.WHITE);
        header.addCell(cellHeader);

        // add placeholder for total page count
        PdfPCell totalPageCount = new PdfPCell(Image.getInstance(pdfTemplate));
        totalPageCount.setBorderColor(BaseColor.WHITE);
        header.addCell(totalPageCount);

        // write page
        PdfContentByte canvas = writer.getDirectContent();
        canvas.beginMarkedContentSequence(PdfName.ARTIFACT);
        header.writeSelectedRows(0, -1 , 34, 803, writer.getDirectContent());
        canvas.endMarkedContentSequence();
    } catch(DocumentException | FileNotFoundException de) {
        throw new ExceptionConverter(de);
    }
}

public void onCloseDocument(PdfWriter writer, Document document) {
    try {
        ColumnText.showTextAligned(pdfTemplate, Element.ALIGN_RIGHT, new Phrase(String.valueOf(writer.getPageNumber() - 1), FontUtil.fontSize9()),
                10, 5, 0);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

}

您可以扩展它的类,使其具有可用于任务的附加属性。请参阅。您可以扩展其类,使其具有可用于任务的附加属性。看见