iTextSharp并将一些数据移动到下一页

时间:2010-10-12 16:01:15

标签: itextsharp pdfptable

我正在使用iTextSharp创建发票。这显示很好,但有时,当发票项目的数量较大时,汇总部分(显示小计,税,​​折扣,总计等)将被拆分。一些显示在当前页面中,一些显示在下一页。我想将整个摘要部分移到下一页,如果剩下当前的高度还不够。

然而,要做到这一点,我需要知道剩余多少页面高度(在我当前的页面内容渲染之后)。我想知道是否有人知道如何计算页面的当前左高度?或者,如果pdfPTable中有一个属性,可能会强制表格作为一个整体打印出来,不要让它分割成多个页面!我想如果第二个选项可用,那将很容易。

总之,我需要知道是否可以计算剩余页面高度,以及是否可以强制表格不分割在多个页面上。

谢谢你。    Sameers

3 个答案:

答案 0 :(得分:10)

您可以将SplitLate设置为false,以避免单元格数据超出限制时自动分页。

......
table.addCell(cellData);

table.SplitLate = false;
......

答案 1 :(得分:1)

我建议您使用嵌套表作为摘要部分。我不相信iText会在页面边界上拆分给定的单元格,因此该单元格中的所有内容(即使它是一个具有自己单元格的嵌套表格)也将保留在同一页面上。

使用表格单元格的行间距,使其自行占用整行。

我不确定,但我会赌啤酒。

答案 2 :(得分:0)

您使用什么对象将数据添加到PDF? MultiColumnText,Paragraph,Phrase?

您应该能够使用Document.PageSize.Height属性返回页面的高度。

然后使用PDFPTable.Height返回表格的高度。

所以只需使用逻辑Document.PageSize.Height - table.Height,你就可以获得剩余的y轴空间。

PDFPTable对象具有名为SplitLate和SplitRows的属性。我相信您可以使用这些属性尝试并将表保留在一个页面上。