Skip to content

Commit a26b692

Browse files
author
joris.schellekens
committed
Change CollapsedTableBorders to handle empty nested table
Resolves: DEVSIX-1398
1 parent 07e073f commit a26b692

File tree

3 files changed

+50
-2
lines changed

3 files changed

+50
-2
lines changed

layout/src/main/java/com/itextpdf/layout/renderer/CollapsedTableBorders.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,10 @@ protected CollapsedTableBorders collapseAllBordersAndEmptyRows() {
7474
int[] rowspansToDeduct = new int[numberOfColumns];
7575
int numOfRowsToRemove = 0;
7676
for (int row = startRow - largeTableIndexOffset; row <= finishRow - largeTableIndexOffset; row++) {
77-
currentRow = rows.get(row);
77+
currentRow = rows.isEmpty() ? null : rows.get(row);
7878
boolean hasCells = false;
7979
for (int col = 0; col < numberOfColumns; col++) {
80-
if (null != currentRow[col]) {
80+
if (null != currentRow && null != currentRow[col]) {
8181
int colspan = (int) currentRow[col].getPropertyAsInteger(Property.COLSPAN);
8282
if (rowspansToDeduct[col] > 0) {
8383
int rowspan = (int) currentRow[col].getPropertyAsInteger(Property.ROWSPAN) - rowspansToDeduct[col];
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.itextpdf.layout.renderer;
2+
3+
import com.itextpdf.kernel.pdf.PdfDocument;
4+
import com.itextpdf.kernel.pdf.PdfWriter;
5+
import com.itextpdf.kernel.utils.CompareTool;
6+
import com.itextpdf.layout.Document;
7+
import com.itextpdf.layout.element.Cell;
8+
import com.itextpdf.layout.element.Table;
9+
import com.itextpdf.test.ExtendedITextTest;
10+
import com.itextpdf.test.annotations.type.IntegrationTest;
11+
import org.junit.Assert;
12+
import org.junit.Test;
13+
import org.junit.experimental.categories.Category;
14+
15+
import java.io.File;
16+
import java.io.IOException;
17+
18+
/**
19+
*/
20+
@Category(IntegrationTest.class)
21+
public class EmptyNestedTableTest extends ExtendedITextTest {
22+
23+
public static final String sourceFolder = "./src/test/resources/com/itextpdf/layout/EmptyNestedTableTest/";
24+
public static final String destinationFolder = "./target/test/com/itextpdf/layout/EmptyNestedTableTest/";
25+
26+
@Test
27+
public void buildEmptyTable() throws IOException, InterruptedException {
28+
29+
String outFileName = destinationFolder + "emptNestedTableTest.pdf";
30+
String cmpFileName = sourceFolder + "cmp_emptNestedTableTest.pdf";
31+
32+
// setup document
33+
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName));
34+
pdfDocument.setTagged();
35+
Document layoutDocument = new Document(pdfDocument);
36+
37+
// add table to document
38+
Table x = new Table(1).addCell(new Cell().add(new Table(1)));
39+
layoutDocument.add(x);
40+
41+
// close document
42+
layoutDocument.close();
43+
44+
// compare
45+
Assert.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff"));
46+
}
47+
48+
}

0 commit comments

Comments
 (0)