如何检测I';我在iText PDF的新页面上?

如何检测I';我在iText PDF的新页面上?,pdf,itext,Pdf,Itext,我需要能够告诉我,如果我在一个新的页面上,没有行显示在itext PDF中,抑制列标题。我发现了一个自定义的PDfPageEvent类,它实现了原始的PDfPageEvent接口并实现了onStartPage方法,如下所示: public class PdfPageEvent implements com.lowagie.text.pdf.PdfPageEvent { Report report; public PdfPageEvent(Report report) {

我需要能够告诉我,如果我在一个新的页面上,没有行显示在itext PDF中,抑制列标题。我发现了一个自定义的PDfPageEvent类,它实现了原始的PDfPageEvent接口并实现了onStartPage方法,如下所示:

public class PdfPageEvent implements com.lowagie.text.pdf.PdfPageEvent {
    Report report;

    public PdfPageEvent(Report report) {
        this.report = report;
    }

    public void onStartPage(PdfWriter writer, Document document) {
        ReportTable table = report.getPageHeaderForPDF();
        if (table != null) {
            PdfPTable pTable = ((PdfReportTable) table).getTable();
            pTable.setTotalWidth(document.getPageSize().getRight() - document.getPageSize().getLeft() - 20);
            pTable.writeSelectedRows(0, -1, 10, document.getPageSize().getTop() - 10, writer.getDirectContent());
        }
    }

    public void onEndPage(PdfWriter writer, Document document) {
        ReportTable table = report.getPageFooter();
        if (table != null) {
            PdfPTable pTable = ((PdfReportTable) table).getTable();
            pTable.setTotalWidth(document.getPageSize().getRight() - document.getPageSize().getLeft() - 20);
            pTable.writeSelectedRows(0, -1, 10, document.getPageSize().getBottom() + 20, writer.getDirectContent());
        }
    }

    public void onOpenDocument(PdfWriter writer, Document document) {
    }

    public void onCloseDocument(PdfWriter writer, Document document) {
    }

    public void onParagraph(PdfWriter writer, Document document, float paragraphPosition) {
    }

    public void onParagraphEnd(PdfWriter writer, Document document, float paragraphPosition) {
    }

    public void onChapter(PdfWriter writer, Document document, float paragraphPosition, Paragraph title) {
    }

    public void onChapterEnd(PdfWriter writer, Document document, float paragraphPosition) {
    }

    public void onSection(PdfWriter writer, Document document, float paragraphPosition, int depth, Paragraph title) {
    }

    public void onSectionEnd(PdfWriter writer, Document document, float paragraphPosition) {
    }

    public void onGenericTag(PdfWriter writer, Document document, Rectangle rect, String text) {
    }
}
打印列标题的逻辑位于“report.getPageHeaderForPDF()”中。 如何检测我是否在新的pdf页面上,并且writer.getDirectContent()至少有一行已添加到该新页面

如果我在新页面上,我想我可以使用以下两种方法:

int pageNumber = writer.getPageNumber();
int currentPageNumber = writer.getCurrentPageNumber();

但是,如何根据writer.getDirectContent()的内容确定该页上是否还有实际的行要打印?

我不理解您的代码。首先:禁止在
onStartPage()方法中添加内容!此外:您正在使用
writeSelectedRows()
添加一个表,这意味着该表不会自动分布在不同的页面上。如果我是你,我会扔掉我的代码,重新表述我的需求。这是我正在努力改进的现有代码。