Как предотвратить разбиение таблицы iText PdfPCell по нескольким строкам на страницы? - PullRequest
4 голосов
/ 02 августа 2011

Я использую iText (iTextSharp 5.1.1) и пытаюсь создать несколько таблиц.

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

Можно ли определить, будет ли столбец занимать две страницы при добавлении в документ, поэтому я могу заполнить несколько строк, чтобы предотвратить такое поведение.

Или есть ли способ заставить клетку не делить ни при каких обстоятельствах?

1 Ответ

0 голосов
/ 13 июня 2013

Хорошо, я кодировал ваш пример с iText 2.1.7 в Java:

PdfPTable table = new PdfPTable(2);
table.setSplitLate(true); // default value
PdfPCell largeCell =
        new PdfPCell(new Paragraph("Lorem ipsum dolor sit amet,\r\n"
                + "consectetur adipiscing elit. Curabitur\r\n"
                + "vel nisl quis turpis molestie blandit.\r\n"
                + "Donec a ligula sit amet quam feugiat\r\n"
                + "aliquet in id augue. Etiam placerat\r\n"
                + "massa ac ligula dictum convallis.\r\n"
                + "Mauris in leo quis lorem facilisis\r\n"
                + "tincidunt. Praesent lorem libero,\r\n"
                + "porttitor tincidunt egestas consequat,\r\n"
                + "tempor quis erat. Sed lorem ipsum,\r\n"
                + "posuere a ornare ac, viverra ut diam. In\r\n"
                + "porta ultrices tristique. Nulla non libero\r\n"
                + "a nisi pharetra consequat. Vestibulum\r\n"
                + "nunc urna, lobortis id ultricies vitae,\r\n"
                + "fermentum eu magna. Duis nibh lacus,\r\n"
                + "adipiscing at tempor eget, interdum\r\n" + "quis libero."));

PdfPCell cell = new PdfPCell(new Paragraph("Long Column"));
cell.setRowspan(5);
table.addCell(cell);
for (int i = 0; i < 5; i++)
{
    table.addCell(largeCell);
}

И он работает довольно хорошо, как и спрашивал Корнелье ... "Неправильный" вывод будет произведен только тогда, когда яиспользуйте table.setSplitLate(false), поэтому со значением по умолчанию true все в порядке.

...