/// <summary> /// Starts a new group by creating a new table and initializing its properties. /// </summary> /// <param name="groupHeaderRowCellsData">New group's header row data</param> /// <param name="shouldCheckOneGroupPerPage">Do we need a new page again?</param> public void StartNewGroup(IEnumerable <CellData> groupHeaderRowCellsData, bool shouldCheckOneGroupPerPage) { MainTable.ElementComplete = true; //print the last footer var hasRows = MainTable.Rows.Any(); if (hasRows) { if (SharedData.ShouldWrapTablesInColumns) { MainGroupTable.AddCell(new PdfPCell(MainTable) { Border = 0 }); } else { MainTable.SpacingAfter += MainTable.HeaderHeight + 2.5f; tryFitToContent(); SharedData.PdfDoc.Add(MainTable); MainTable.DeleteBodyRows(); } } if (SharedData.MainTableEvents != null && _groupNumber > 0) { SharedData.MainTableEvents.GroupAdded(new EventsArguments { PdfDoc = SharedData.PdfDoc, PdfWriter = SharedData.PdfWriter, Table = MainGroupTable, ColumnCellsSummaryData = SharedData.ColumnCellsSummaryData, PreviousTableRowData = CurrentRowInfoData.PreviousTableRowData, PageSetup = SharedData.PageSetup, PdfFont = SharedData.PdfFont, PdfColumnsAttributes = SharedData.PdfColumnsAttributes }); } _groupNumber++; if (shouldCheckOneGroupPerPage) { showOneGroupPerPage(); } renderGroupHeader(groupHeaderRowCellsData); initMainTable(); RowsManager.TableInitAddHeaderAndFooter(); reset(); }