@@ -72,53 +72,55 @@ protected internal virtual iText.Layout.Renderer.CollapsedTableBorders CollapseA
7272 CellRenderer [ ] currentRow ;
7373 int [ ] rowspansToDeduct = new int [ numberOfColumns ] ;
7474 int numOfRowsToRemove = 0 ;
75- for ( int row = startRow - largeTableIndexOffset ; row <= finishRow - largeTableIndexOffset ; row ++ ) {
76- currentRow = rows . IsEmpty ( ) ? null : rows [ row ] ;
77- bool hasCells = false ;
78- for ( int col = 0 ; col < numberOfColumns ; col ++ ) {
79- if ( null != currentRow && null != currentRow [ col ] ) {
80- int colspan = ( int ) currentRow [ col ] . GetPropertyAsInteger ( Property . COLSPAN ) ;
81- if ( rowspansToDeduct [ col ] > 0 ) {
82- int rowspan = ( int ) currentRow [ col ] . GetPropertyAsInteger ( Property . ROWSPAN ) - rowspansToDeduct [ col ] ;
83- if ( rowspan < 1 ) {
84- ILogger logger = LoggerFactory . GetLogger ( typeof ( TableRenderer ) ) ;
85- logger . Warn ( iText . IO . LogMessageConstant . UNEXPECTED_BEHAVIOUR_DURING_TABLE_ROW_COLLAPSING ) ;
86- rowspan = 1 ;
75+ if ( ! rows . IsEmpty ( ) ) {
76+ for ( int row = startRow - largeTableIndexOffset ; row <= finishRow - largeTableIndexOffset ; row ++ ) {
77+ currentRow = rows [ row ] ;
78+ bool hasCells = false ;
79+ for ( int col = 0 ; col < numberOfColumns ; col ++ ) {
80+ if ( null != currentRow && null != currentRow [ col ] ) {
81+ int colspan = ( int ) currentRow [ col ] . GetPropertyAsInteger ( Property . COLSPAN ) ;
82+ if ( rowspansToDeduct [ col ] > 0 ) {
83+ int rowspan = ( int ) currentRow [ col ] . GetPropertyAsInteger ( Property . ROWSPAN ) - rowspansToDeduct [ col ] ;
84+ if ( rowspan < 1 ) {
85+ ILogger logger = LoggerFactory . GetLogger ( typeof ( TableRenderer ) ) ;
86+ logger . Warn ( iText . IO . LogMessageConstant . UNEXPECTED_BEHAVIOUR_DURING_TABLE_ROW_COLLAPSING ) ;
87+ rowspan = 1 ;
88+ }
89+ currentRow [ col ] . SetProperty ( Property . ROWSPAN , rowspan ) ;
90+ if ( 0 != numOfRowsToRemove ) {
91+ RemoveRows ( row - numOfRowsToRemove , numOfRowsToRemove ) ;
92+ row -= numOfRowsToRemove ;
93+ numOfRowsToRemove = 0 ;
94+ }
8795 }
88- currentRow [ col ] . SetProperty ( Property . ROWSPAN , rowspan ) ;
89- if ( 0 != numOfRowsToRemove ) {
90- RemoveRows ( row - numOfRowsToRemove , numOfRowsToRemove ) ;
91- row -= numOfRowsToRemove ;
92- numOfRowsToRemove = 0 ;
96+ BuildBordersArrays ( currentRow [ col ] , row , col , rowspansToDeduct ) ;
97+ hasCells = true ;
98+ for ( int i = 0 ; i < colspan ; i ++ ) {
99+ rowspansToDeduct [ col + i ] = 0 ;
93100 }
101+ col += colspan - 1 ;
94102 }
95- BuildBordersArrays ( currentRow [ col ] , row , col , rowspansToDeduct ) ;
96- hasCells = true ;
97- for ( int i = 0 ; i < colspan ; i ++ ) {
98- rowspansToDeduct [ col + i ] = 0 ;
103+ else {
104+ if ( horizontalBorders [ row ] . Count <= col ) {
105+ horizontalBorders [ row ] . Add ( null ) ;
106+ }
99107 }
100- col += colspan - 1 ;
101108 }
102- else {
103- if ( horizontalBorders [ row ] . Count <= col ) {
104- horizontalBorders [ row ] . Add ( null ) ;
109+ if ( ! hasCells ) {
110+ if ( row == rows . Count - 1 ) {
111+ RemoveRows ( row - rowspansToDeduct [ 0 ] , rowspansToDeduct [ 0 ] ) ;
112+ // delete current row
113+ rows . JRemoveAt ( row - rowspansToDeduct [ 0 ] ) ;
114+ SetFinishRow ( finishRow - 1 ) ;
115+ ILogger logger = LoggerFactory . GetLogger ( typeof ( TableRenderer ) ) ;
116+ logger . Warn ( iText . IO . LogMessageConstant . LAST_ROW_IS_NOT_COMPLETE ) ;
105117 }
106- }
107- }
108- if ( ! hasCells ) {
109- if ( row == rows . Count - 1 ) {
110- RemoveRows ( row - rowspansToDeduct [ 0 ] , rowspansToDeduct [ 0 ] ) ;
111- // delete current row
112- rows . JRemoveAt ( row - rowspansToDeduct [ 0 ] ) ;
113- SetFinishRow ( finishRow - 1 ) ;
114- ILogger logger = LoggerFactory . GetLogger ( typeof ( TableRenderer ) ) ;
115- logger . Warn ( iText . IO . LogMessageConstant . LAST_ROW_IS_NOT_COMPLETE ) ;
116- }
117- else {
118- for ( int i = 0 ; i < numberOfColumns ; i ++ ) {
119- rowspansToDeduct [ i ] ++ ;
118+ else {
119+ for ( int i = 0 ; i < numberOfColumns ; i ++ ) {
120+ rowspansToDeduct [ i ] ++ ;
121+ }
122+ numOfRowsToRemove ++ ;
120123 }
121- numOfRowsToRemove ++ ;
122124 }
123125 }
124126 }
0 commit comments