4

我正在使用 iTextSharp v5.3 构建一个 PDF,其中包含一个或多个具有相同单元格但高度可能因动态内容而异的表格。目前,如果 aPdfPTable太大而无法放在当前页面上,则表格将被破坏,并且剩余的单元格数据最终会出现在下一页上。有没有办法告诉 iTextSharp 如果表格不适合,将整个内容放在下一页上?

坏桌休息

我试过弄乱SplitRowsSplitLate但它们没有达到预期的效果。在添加到文档后,我也尝试进行一些计算,PdfPTable但无法弄清楚如何获取页面上的“光标位置”。我是否需要在循环中跟踪当前页面的高度并自己进行所有计算?

4

4 回答 4

9

您还可以使用:

tableName.KeepTogether = true;
于 2013-08-15T19:50:32.313 回答
4

您可以询问桌子的总高度。这样做是这样的:table.TotalHeight

如果高度为 0,请确保首先定义了宽度:如果 iText 不知道呈现表格的可用宽度,则 iText 无法计算宽度。

确定高度后,向作者询问垂直位置:writer.GetVerticalPosition(true)

您可能知道,页面底部的 Y 坐标为 0。如果垂直位置减去页面的总高度超过了页边距大小,你就知道表格放不下,你可以触发一个新的页面。

于 2013-01-03T08:44:30.340 回答
2

Bruno Lowagie 指出了正确的解决方案 - 我想添加将表格缩小到页面的可能性,即使它太大了。看这里:是否可以“缩小” PdfPtable?

于 2013-01-03T10:54:57.167 回答
0

可能不是“正确”的方式,但您可以将表格包装在单单元容器表格中。一个单元格不能一分为二。

于 2017-07-26T06:59:50.717 回答