iTextSharp 并将一些数据移动到下一页
我正在使用 iTextSharp 创建发票。显示效果很好,但有时,当发票项目数量较大时,摘要部分(显示小计、税费、折扣、总计等)会被拆分。有些显示在当前页面,有些移动到下一页。我正在考虑将整个摘要部分移至下一页,如果当前剩余高度不够。
但是,要做到这一点,我需要知道还剩下多少页面高度(在当前页面内容呈现之后)。我想知道是否有人知道如何计算页面当前的左侧高度?或者,如果 pdfPTable 中有一个属性可能会强制表格将其作为一个整体打印,并且不要让它拆分为多个页面!我想如果有第二种选择,那就很容易了。
总之,我需要知道是否可以计算剩余页面高度,以及是否可以强制表不拆分为多个页面。
谢谢。 萨默斯
I am creating an invoice using the iTextSharp. That displays nicely but sometime, when invoice items are larger in qty, the summary portion (which displays subtotal, tax, discounts, grand total etc) is splitted. Some displayes in current page and some moves to next page. I was thinking to move entire summary portion into next page, if current height left is not enough for that.
However, to do that, I need to know that how much page height is left (after my current page content rendering). I wonder if someone know how to calculate current left height of the page? OR if there is a property in the pdfPTable which may force the table to print itself as a whole and dont let it split across multiple pages! I guess if second option is available, it will be easy.
In summary, I need to know if it is possible to calculate remaining page height, and also if that is possible to force a table to NOT split across multiple pages.
thank you.
Sameers
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以将
SplitLate
设置为false
以避免单元格数据超出限制时自动分页。You can set
SplitLate
tofalse
to avoid auto page break in a cell data exceeds limit.我建议您在摘要部分使用嵌套表。我不相信 iText 会在页面边界上分割给定的单元格,因此该单元格中的所有内容(即使它是一个包含自己的单元格的嵌套表)都将保留在同一页面上。
使用表格单元格的行跨度,使其独立占据一整行。
我不确定,但我敢打赌,一定要喝啤酒。
I suggest you use a nested table for your summary section. I don't believe iText will split a given cell on a page boundary, so everything in that cell (even if its a nested table with cells of its own) will stay on the same page.
Use the table's cell's row span so it takes up an entire row on its own.
I'm not certain, but I'd wager a beer on it.
您使用什么对象将数据添加到 PDF 中?多列文本、段落、短语?
您应该能够使用 Document.PageSize.Height 属性返回页面的高度。
然后使用 PDFPTable.Height 返回表格的高度。
因此,只需使用逻辑 Document.PageSize.Height - table.Height,即可获得剩余的 y 轴空间。
PDFPTable 对象具有名为 SplitLate 和 SplitRows 的属性。我相信您可以使用这些属性尝试并将表格保留在一页上。
What object are you using to add your data to the PDF? MultiColumnText, Paragraph, Phrase?
You should be able to use Document.PageSize.Height property to return the height of the Page.
Then use PDFPTable.Height to return the height of your table.
So just use the logic Document.PageSize.Height - table.Height, and you'll have the remaining y-axis space available.
The PDFPTable object has properties named SplitLate and SplitRows. I believe you can use these properties to try and keep the table on one page.