我正在使用iTextSharp创建发票。这显示很好,但有时,当发票项目的数量较大时,汇总部分(显示小计,税,折扣,总计等)将被拆分。一些显示在当前页面中,一些显示在下一页。我想将整个摘要部分移到下一页,如果剩下当前的高度还不够。
然而,要做到这一点,我需要知道剩余多少页面高度(在我当前的页面内容渲染之后)。我想知道是否有人知道如何计算页面的当前左高度?或者,如果pdfPTable中有一个属性,可能会强制表格作为一个整体打印出来,不要让它分割成多个页面!我想如果第二个选项可用,那将很容易。
总之,我需要知道是否可以计算剩余页面高度,以及是否可以强制表格不分割在多个页面上。
谢谢你。 Sameers答案 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的属性。我相信您可以使用这些属性尝试并将表保留在一个页面上。