【问题标题】:How can I determine if a MigraDoc table would be split among two pages?如何确定 MigraDoc 表是否会被拆分为两页?
【发布时间】:2012-10-15 20:04:48
【问题描述】:

我正在使用 MigraDoc 生成一些 PDF。我有代码为数组中的每个元素创建一个文本表,并用这些表打印出页面。

但是,我得到的要求是,如果我有 2 个表,并且由于第一个表的长度,第二个表不适合页面,我需要第二个表来开始下一页。然后,我需要对要添加到文档中的每个表重复此操作。

我该怎么做呢?

【问题讨论】:

    标签: c# migradoc


    【解决方案1】:

    如果所有表格都小到足以容纳一页,那么有一个简单的解决方案:将第一行的 KeepWith 属性设置为行数减一,以将整个表格保持在一页上。

    如果表格并不总是适合单个页面:您可以尝试 hack,例如将 KeepWith 设置为 6 或 8 或 10(取决于表格行的高度)。如果该值接近于适合单个页面的值(不重复),表格将自动在新页面上开始。
    显然,如果表格行具有恒定的高度,这将非常有效;如果表格行的高度不同,这将无法可靠地工作,但仍会阻止在第一页上只有一两行的表格(这不是您的要求,但也许可以讨论这个要求?)。

    满足您要求的简洁(但复杂)方法:访问内部 GetRenderInfoFromPage 方法。您将不得不开始一个增量过程:
    1) 渲染文档;
    2) 如果您找到一个拆分表,请在该表之前插入一个分页符并从 1 开始重复。
    参见此处:
    http://forum.pdfsharp.net/viewtopic.php?p=1960#p1960

    【讨论】:

    • 每个表最多应该占一页的 3/4,所以 KeepWith 属性应该足够了。一旦我终于可以测试它,我会把它标记为答案谢谢!
    猜你喜欢
    • 2017-10-20
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2023-03-07
    • 1970-01-01
    • 2016-06-25
    • 2014-01-04
    相关资源
    最近更新 更多