我正在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。
生成的报告包含更多页面。因此,对于某些节标题,如果下一行不适合该行,则最后一行将扩展到底部页边距。
如何摆脱这个问题。