2015-11-09 5 views
0

Возможно ли в таблице Gembox.Document вставить таблицу в документ и предотвратить ее разделение на разрыв страницы, но вместо этого переместить ее на следующую страницу, если она не соответствует предыдущей странице? Я просмотрел образцы и документацию, но ничего не нашел.Документ Gembox предотвращает разрывы страниц в таблице?

ответ

0

Вам необходимо установить KeepLinesTogether и KeepWithNext свойствам для true для абзацев, которые расположены в этой таблице. Например, попробуйте следующее:

Table table = ... 

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

EDIT
выше будет работать в большинстве случаев, однако проблема может возникнуть, когда 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; 
} 
Смежные вопросы