直指重点
我正在构造一个大型表,该表从后端获取数据。
我正在使用Itextsharp 5.0.0。由于特定原因,无法升级
我有一个父表,我将所有表都添加为单元格。
在父表中,我要添加以下属性
SplitRows为true SplitLate为false KeepTogether为假
在子表中添加以下属性 KeepTogether为假 splitRows为false; //对于某些表 从被调用到主表的不同函数获取所有行后,我将SetExtendedRow应用于false 然后我将该表添加到pdfdocument。
主表结构
private PdfPTable mainTable()
{
//PdfPTableHelper.Create-> Create Table without border
//Create(1->Number of column)
PdfPTable mainTable= PdfPTableHelper.Create(1);
mainTable.KeepTogether = false;
mainTable.SplitRows = true;
mainTable.SplitLate = false;
foreach(var part in parts)
{
ChildTable1(ref mainTable,part);
ChildTable2(ref mainTable,part);
ChildTable3(ref mainTable,part);
}
mainTable.SetExtendedRow(false,false);
}
private PdfPTable ChildTable1(ref PdfPTable mainTable,XElement part)
{
PdfPTable childTable1 = PdfPTableHelper.Create(4);
childTable1.KeepTogether = false;
//CreatePdfCell(Value of the cell, font, number of column)
childTable1.AddCell(CellHelper.CreatePdfCell("Cell1: "+part.Cell1.value,defaultFont,1));
childTable1.AddCell(CellHelper.CreatePdfCell("Cell2: "+part.Cell2.value,defaultFont,3));
childTable1.AddCell(CellHelper.CreatePdfCell("Cell3: "+part.Cell3.value,defaultFont,1));
childTable1.AddCell(CellHelper.CreatePdfCell("Cell14 "+part.Cell4.value,defaultFont,3));
childTable1.splitRows = false;//For some table
mainTable.AddCell(childTable1);
}
类似地,正在创建其他子表并将其添加到主表中
当itext尝试在页面末尾呈现表时,就会出现所有问题。我的目标是内容可以跨页面流动。但不应有任何数据丢失。
如果我们不使用splitRows为false。在某些情况下,我们会丢失如下表的一部分
在此图像中,您可以看到右侧的cell2内容将转到下一页。 但是在页面末尾,PdfPRow的第一部分被遗漏了。 Itext完全忽略了这一点,并转到该行的下一部分,将其呈现在下一页的开始。
为什么会这样?我厌倦了搜索无法获得任何相关信息 如果我们对该表应用splitRow-> false,则完整的行将转发到下一页。在最后一页中保留大量空间,这是不正常的。
我有以下问题
splitLate的缺点是什么-> false 是否会因为这种情况而发生数据丢失(如果可以的话),我将无法在页面中留出空白。
应将什么属性应用于父表,以使所有子表保持完整。不会导致任何数据丢失。
我知道Itext 5.0.0已经死了。但是,我无法将其升级到最新版本。