Gembox Document阻止表格中的分页?

时间:2015-11-09 15:24:03

标签: c# page-break gembox-document

是否可以在Gembox.Document中将一个表插入到文档中并防止它被分页符拆分,而是将其移动到下一页(如果它不适合上一页)? 我查看了样本和文档但没有找到任何内容。

1 个答案:

答案 0 :(得分:1)

对于位于该表中的段落,您需要将KeepLinesTogetherKeepWithNext属性设置为true。例如,尝试以下方法:

Table table = ...

foreach (ParagraphFormat paragraphFormat in table
    .GetChildElements(true, ElementType.Paragraph)
    .Cast<Paragraph>()
    .Select(p => p.ParagraphFormat))
{
    paragraphFormat.KeepLinesTogether = true;
    paragraphFormat.KeepWithNext = true;
}

修改
以上内容适用于大多数情况,但是当Table元素具有空TableCell个元素且没有任何Paragraph元素时,可能会出现此问题。

为此,我们需要向这些Paragraph元素添加一个空的TableCell元素,以便我们可以设置所需的格式(来源:Keep Table on same page):

// Get all Paragraph formats in a Table element.
IEnumerable<ParagraphFormat> formats = table
    .GetChildElements(true, ElementType.TableCell)
    .Cast<TableCell>()
    .SelectMany(cell =>
    {
        if (cell.Blocks.Count == 0)
            cell.Blocks.Add(new Paragraph(cell.Document));
        return cell.GetChildElements(true, ElementType.Paragraph);
    })
    .Cast<Paragraph>()
    .Select(p => p.ParagraphFormat);

// Set KeepLinesTogether and KeepWithNext properties.
foreach (ParagraphFormat format in formats)
{
    format.KeepLinesTogether = true;
    format.KeepWithNext = true;
}