我正在使用iTextSharp v5.3来构建一个PDF,其中包含一个或多个具有相同单元格的表格,但由于动态内容而导致高度不同。目前,如果PdfPTable
太大而无法放在当前页面上,则该表将被破坏,剩余的单元格数据将在下一页上结束。有没有办法告诉iTextSharp,如果表格不合适,将整件事放在下一页?
我尝试过使用SplitRows
和SplitLate
,但它们没有达到预期的效果。在将PdfPTable
添加到文档后,我还尝试进行一些计算,但无法弄清楚如何在页面上获取“光标位置”。我是否需要在循环中跟踪当前页面的高度并自行完成所有计算?
答案 0 :(得分:6)
你也可以使用tableName.KeepTogether = True
答案 1 :(得分:4)
您可以询问桌子的总高度。这样做:table.TotalHeight
如果高度为0,请确保首先定义宽度:如果iText不知道渲染表格的可用宽度,则无法计算宽度。
一旦你有了高度,请向作者询问垂直位置:writer.GetVerticalPosition(true)
您可能知道,页面底部的Y坐标为0。如果垂直位置减去页面总高度超出了边距大小,则表示该表格不适合,您可以触发新页面。
答案 2 :(得分:2)
Bruno Lowagie指出了正确的解决方案 - 我想增加将表缩小到页面的可能性,即使它太大了。 看这里:Is it possible to "shrink" a PdfPtable?
答案 3 :(得分:0)
可能不是“正确”的方式,但您可以将表包装在单个单元容器表中。单个细胞不能分成两半。