Migradoc: избегайте разрыва страницы в случае объединения строк

Когда на странице не хватает места, объединенные строки (ячейки) в таблице помещаются на новую страницу.

Как предотвратить это и убедиться, что таблица заполняет свободное место на текущей странице?

Это изображение показывает, проблема

    Section section = document.AddSection();
    Table t5 = new Table();

    t5.AddColumn(Unit.FromCentimeter(4));
    t5.AddColumn(Unit.FromCentimeter(4));

    Row first = t5.AddRow();
    first.Cells[0].AddParagraph("Header 1");
    first.Cells[1].AddParagraph("Header 2");

    for (int j = 0; j < 4; j++)
    {
        var rowpd = t5.AddRow();
        rowpd.VerticalAlignment = VerticalAlignment.Center;
        rowpd.Cells[0].MergeDown = 17;
        rowpd.Cells[0].AddParagraph("Merged 18 cells. ");
        for (int i = 0; i < 18; i++)
        {
            if (i == 0)
            {
                rowpd.Cells[1].AddParagraph($"value {i}");
            }
            else
            {
                var row = t5.AddRow();
                row.Cells[1].AddParagraph($"value {i}");
            }
        }
    }
    document.LastSection.Add(t5);

person free    schedule 26.07.2019    source источник


Ответы (1)


MigraDoc (пока) не разделяет ячейки, а только между ячейками. С MergeDown вы создаете огромную ячейку, которая не будет разделена.

Вариант: избегайте MergeDown и используйте много маленьких ячеек в левом столбце без горизонтальных границ, чтобы добиться аналогичного оптического эффекта, но с ожидаемым разрывом страницы. В зависимости от текста в левом столбце это может быть или не быть вариантом.

person I liked the old Stack Overflow    schedule 27.07.2019
comment
Большое спасибо за ваш опыт, я также почувствовал, что из-за отсутствия API обход проблемы, пожалуй, единственное решение. Я попробую, и если это сработает, я отмечу ваш отзыв как одобренное решение. - person free; 29.07.2019