Pull request #451: RED-3974: Fixed special case table header with diffent size of columns in rows

Merge in RED/redaction-service from RED-3974 to master

* commit 'a9ff46a3fd3363b47799e8dfe5dc99575c36a33b':
  RED-3974: Fixed special case table header with diffent size of columns in rows
This commit is contained in:
Dominique Eiflaender 2022-08-11 17:12:07 +02:00
commit 4f66f5acf7

View File

@ -98,9 +98,11 @@ public class SectionTextBuilderService {
areas.add(sectionArea); areas.add(sectionArea);
if (!cell.isHeaderCell()) { if (!cell.isHeaderCell()) {
String headerName = getHeaderName(hasHeader, cell, table.getRows().get(0).get(cellNum)); String headerName = getHeaderName(hasHeader, cell, table.getRows().get(0), row.size(), cellNum);
sectionArea.setHeader(headerName); if(headerName != null) {
tabularData.put(headerName, new CellValue(cell.getTextBlocks(), startOffset)); sectionArea.setHeader(headerName);
tabularData.put(headerName, new CellValue(cell.getTextBlocks(), startOffset));
}
} }
textBlocks.addAll(cell.getTextBlocks()); textBlocks.addAll(cell.getTextBlocks());
@ -155,10 +157,17 @@ public class SectionTextBuilderService {
} }
private String getHeaderName(boolean hasHeader, Cell currentCell, Cell cellInFirstRow) { private String getHeaderName(boolean hasHeader, Cell currentCell, List<Cell> firstRow, int currentRowSize, int cellNum) {
return hasHeader ? buildHeaderName(currentCell.getHeaderCells() if (hasHeader && !currentCell.getHeaderCells().isEmpty()) {
.get(currentCell.getHeaderCells().size() - 1)) : buildHeaderName(cellInFirstRow); return buildHeaderName(currentCell.getHeaderCells().get(currentCell.getHeaderCells().size() - 1));
}
if (!hasHeader && currentRowSize == firstRow.size()) {
return buildHeaderName(firstRow.get(cellNum));
}
return null;
} }