Przeglądaj źródła

Fixed: table layout renders incorrectly if one of its cells spans at least three pages

Marcin Ziąbek 2 lat temu
rodzic
commit
68dc2c4289
1 zmienionych plików z 9 dodań i 9 usunięć
  1. 9 9
      Source/QuestPDF/Elements/Table/Table.cs

+ 9 - 9
Source/QuestPDF/Elements/Table/Table.cs

@@ -99,7 +99,7 @@ namespace QuestPDF.Elements.Table
             if (tableSize.Width > availableSpace.Width + Size.Epsilon)
                 return SpacePlan.Wrap();
 
-            return FindLastRenderedRow(renderingCommands) == StartingRowsCount 
+            return CalculateCurrentRow(renderingCommands) > StartingRowsCount 
                 ? SpacePlan.FullRender(tableSize) 
                 : SpacePlan.PartialRender(tableSize);
         }
@@ -126,22 +126,22 @@ namespace QuestPDF.Elements.Table
                 Canvas.Translate(offset.Reverse());
             }
 
-            CurrentRow = FindLastRenderedRow(renderingCommands) + 1;
+            CurrentRow = CalculateCurrentRow(renderingCommands);
+            var isFullyRendered = CurrentRow > StartingRowsCount;
             
-            var isFullRender = FindLastRenderedRow(renderingCommands) == StartingRowsCount;
-            
-            if (isFullRender)
+            if (isFullyRendered)
                 ResetState();
         }
 
-        private static int FindLastRenderedRow(ICollection<TableCellRenderingCommand> commands)
+        private int CalculateCurrentRow(ICollection<TableCellRenderingCommand> commands)
         {
-            return commands
+            var lastFullyRenderedRow = commands
                 .GroupBy(x => x.Cell.Row)
                 .Where(x => x.All(y => y.Cell.IsRendered || y.Measurement.Type == SpacePlanType.FullRender))
                 .Select(x => x.Key)
-                .DefaultIfEmpty(0)
-                .Max();
+                .ToArray();
+            
+            return lastFullyRenderedRow.Any() ? lastFullyRenderedRow.Max() + 1 : CurrentRow;
         }
         
         private void UpdateColumnsWidth(float availableWidth)