У меня есть много маленьких таблиц, которые я инкапсулирую в сводную таблицу 1x1, и для атрибута SplitRows присваиваем значение false на сортирующую таблицу.Таким образом, я могу избежать раскола моей таблицы, когда она достигнет нижней части страницы.Когда я добираюсь до конца страницы, и там есть немного места для текста, но недостаточно для следующей таблицы, iText вообще не добавляет таблицу, но продолжает добавлять следующую таблицу в списке.
Если на текущей странице недостаточно места для таблицы, можно отправить ее на следующую страницу.Что я могу сделать?
http://compgroups.net/comp.text.pdf/Avoid-page-breaks-in-PdfPTable-using-iText-1.2
Это мой код:
public static void CreateMatrixProcentQuestionTable(ShowQuestionViewModel model, Document doc)
{
ShowMatrixQuestionViewModel sm = (ShowMatrixQuestionViewModel)model;
Font fontsize = new Font(Font.FontFamily.HELVETICA, 9f);
Font QuestionFont = new Font(Font.FontFamily.HELVETICA, 12f);
PdfPTable table = new PdfPTable(sm.columns.Count + 2);
// Tilføj spørgsmålet i en række for sig selv, ellers er der chance for at
// svarmulighederne ikke kommer med ved page breaks
PdfPCell question = new PdfPCell(new Phrase(sm.Question_Wording + Environment.NewLine, QuestionFont));
question.Border = Rectangle.NO_BORDER;
question.Colspan = table.NumberOfColumns;
table.AddCell(question);
// Tilføj et mellemrum mellem spørgsmålet og svarmulighederne
PdfPCell mellemrum = new PdfPCell(new Phrase(Environment.NewLine));
mellemrum.Border = Rectangle.NO_BORDER;
mellemrum.Colspan = table.NumberOfColumns;
table.AddCell(mellemrum);
// Tilføj rækker og kolonner
// Dette er den første tomme celle
table.AddCell(new PdfPCell(new Phrase("", fontsize)));
foreach (MatrixColumns column in sm.columns)
{
PdfPCell cell = new PdfPCell(new Phrase(column.Column_Description, fontsize));
cell.HorizontalAlignment = 1;
table.AddCell(cell);
}
PdfPCell ialt = new PdfPCell(new Phrase("I alt", fontsize));
ialt.HorizontalAlignment = 1;
table.AddCell(ialt);
foreach (var pair in sm.columnrow)
{
MatrixRows row = pair.Key;
PdfPCell rowcell = new PdfPCell(new Phrase(row.Row_Description == null ? "*" : row.Row_Description, fontsize));
rowcell.HorizontalAlignment = 1;
table.AddCell(rowcell);
foreach (MatrixColumns column in pair.Value)
{
PdfPCell cell = new PdfPCell(new Phrase("%", fontsize));
cell.HorizontalAlignment = Element.ALIGN_RIGHT;
table.AddCell(cell);
}
PdfPCell sumcell = new PdfPCell(new Phrase("100%", fontsize));
sumcell.HorizontalAlignment = Element.ALIGN_RIGHT;
table.AddCell(sumcell);
}
// Man laver en 1x1 table uden om den rigtige table, og sætter
// SplitRows = False. Dette gør at tabellen ikke bliver knækket over
// ved page breaks
PdfPTable sorroundingTable = new PdfPTable(1);
PdfPCell innerTable = new PdfPCell(table);
innerTable.Border = Rectangle.NO_BORDER;
sorroundingTable.AddCell(innerTable);
sorroundingTable.SplitRows = false;
doc.Add(sorroundingTable);
doc.Add(new Phrase(Environment.NewLine));
}