Itextsharp 5.5 splitLate正在扩展最后一行

时间:2019-01-30 14:58:29

标签: c# itext

我正在iTextsharp中构建一个大表

当我将所有子表添加为一行时,我只有一个父表。 由于我无法控制要填充在表中的数据。 我在用 table.splitLate = false。

我还要将此属性设置为所有子表

如果下一页不适合该页面,则该页面的最后一行将得到扩展。

我已设置此属性

Table.setExtendedLastRow = false

但这没有帮助

如果我使用默认的splitLate和splitRows,并且KeepTogether = false,则由于行大,表已损坏,但大量空白将到。 你们能帮忙吗

    public void GetBodyPTables()
        {
           yield return AggregateStudentsInformation();
        }

        public void AggregateStudentsInformation()
        {
           var stuTable = PdfPTableHelper.Create(1);
           stuTable.KeepTogether = false;
           stuTable.splitLate = false;
           stuTable.SpacingBefore = 15f;
           GetStudentsPostGradInformation(ref stuTable);
           GetStudentsGradInformation(ref stuTable);
           GetStudentsPlus2Information(ref stuTable);
           GetStudentsSecondaryInformation(ref stuTable);
        }

        private void GetStudentsPostGradInforamtion(ref stuTable)
        {
           var postGradTable = PdfPTableHelper.Create(1);
           postGradTable.KeepTogether = false;
           postGradTable.SplitLate = false;
           //Getting info from Xml Schema
           var postGradInfos = XElement.Elements.value("StudentPostGradInfo");
           var headerCell = CellHelper.CreatePdfPCell("Student Graduation Information",this.ReportFonts.SectionFont,Element.ALIGN_CENTER,Element.ALIGN_TOP,1);    headerCell.PaddingBottom = 3f; 
           postGradTable.AddCell(headerCell);

           foreach(var gradElement in postGradInfo)
           {
              var postgradStudentInfo = gradElement.Element.value("PostGradStudentInfo");
              GetSingleStudentPostGradInformation(ref postGradTable,XElement postGradStudentInfo);           
           }
           stuTable.AddCell(gradTable); 
        }



private void GetSingleStudentPostGradInformation(ref postGradTable,XElement postGradStudentInfo)
  {
     var topTable = PdfPTableHelper.Create(18);
     topTable.KeepTogether = false;
     topTable.SplitLate = false;
     topTable.SpacingBefore = 15f;

     //18 column table is divided into 2 cells ,one 4 column cell and another 14 column cell
     topTable.AddCell(CellHelper.CreatePdfPCell("Student Id:" ),postGradStudentInfo.Element("StudentId").Value,_defaultBoldFont,_defaultPlainFont,CellHelper.CellBorder.None,Element.ALIGN_LEFT,Element.ALIGN_TOP,4);

topTable.AddCell(CellHelper.CreatePdfPCell("Student Name:" ),postGradStudentInfo.Element("StudentName").Value,_defaultBoldFont,_defaultPlainFont,CellHelper.CellBorder.None,Element.ALIGN_LEFT,Element.ALIGN_TOP,14);

topTable.AddCell(CellHelper.CreatePdfPCell("CGPA:" ),postGradStudentInfo.Element("cgpa").Value,_defaultBoldFont,_defaultPlainFont,CellHelper.CellBorder.None,Element.ALIGN_LEFT,Element.ALIGN_TOP,4);

topTable.AddCell(CellHelper.CreatePdfPCell("Instructor Comments:" ),postGradStudentInfo.Element("StudentId").Value,_defaultBoldFont,_defaultPlainFont,CellHelper.CellBorder.None,Element.ALIGN_LEFT,Element.ALIGN_TOP,14);
     postGradTable.AddCell(topTable);
}

           //Similar Implementation
           GetStudentsGradInformation(ref stuTable);
           GetStudentsPlus2Information(ref stuTable);
           GetStudentsSecondaryInformation(ref stuTable);

我用过table.SplitLate = false在每个表中。默认情况下为table.SplitRows = true。

生成的报告包含更多页面。因此,对于某些节标题,如果下一行不适合该行,则最后一行将扩展到底部页边距。

如何摆脱这个问题。

0 个答案:

没有答案