如何确定MigraDoc表是否会在两个页面之间拆分?

时间:2012-10-15 20:04:48

标签: c# migradoc

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

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

我将如何做到这一点?

1 个答案:

答案 0 :(得分:7)

如果所有表都足够小以适合单个页面,那么有一个简单的解决方案:将第一行的KeepWith属性设置为行数减一,以将整个表保留在一个页面上。

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

满足您要求的干净(但复杂)方式:访问内部GetRenderInfoFromPage方法。您必须开始增量过程:
1)渲染文件;
2)如果找到拆分表,请在该表之前插入分页符并从1开始重复 另见这里:
http://forum.pdfsharp.net/viewtopic.php?p=1960#p1960