如何检测I';我在iText PDF的新页面上?
我需要能够告诉我,如果我在一个新的页面上,没有行显示在itext PDF中,抑制列标题。我发现了一个自定义的PDfPageEvent类,它实现了原始的PDfPageEvent接口并实现了onStartPage方法,如下所示:如何检测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) {
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()
添加一个表,这意味着该表不会自动分布在不同的页面上。如果我是你,我会扔掉我的代码,重新表述我的需求。这是我正在努力改进的现有代码。