diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/it/alessandroiezzi/simplyreports/pdf/PDFTable.java | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/main/java/it/alessandroiezzi/simplyreports/pdf/PDFTable.java b/src/main/java/it/alessandroiezzi/simplyreports/pdf/PDFTable.java index 39ee50e..ad44916 100644 --- a/src/main/java/it/alessandroiezzi/simplyreports/pdf/PDFTable.java +++ b/src/main/java/it/alessandroiezzi/simplyreports/pdf/PDFTable.java @@ -19,8 +19,11 @@ package it.alessandroiezzi.simplyreports.pdf; -import com.lowagie.text.DocumentException; +import com.lowagie.text.*; +import com.lowagie.text.Font; import com.lowagie.text.pdf.*; + +import java.awt.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -30,13 +33,15 @@ import java.util.function.Supplier; public abstract class PDFTable<E> extends PDFEntity<PdfPTable> { private final List<E> entities; private final List<PdfTableCell> cells = new ArrayList<>(); - private int[] widths = null; + private final int[] widths; private PDFTableHeader header; private PDFTableFooter footer; + private final String[] columnTitles; - public PDFTable(List<E> entities, int...widths) { + public PDFTable(List<E> entities, String[] columnTitles, int...widths) { this.entities = entities; this.widths = widths; + this.columnTitles = columnTitles; generateSignature(); } @@ -79,6 +84,8 @@ public abstract class PDFTable<E> extends PDFEntity<PdfPTable> { if (widths != null && widths.length > 0) table.setWidths(widths); + else + throw new IllegalArgumentException("widths is mandatory!"); for (E entity : this.entities) { mapRow(entity); @@ -91,6 +98,21 @@ public abstract class PDFTable<E> extends PDFEntity<PdfPTable> { table.addCell(header.generate(writer)); } + if (columnTitles != null && columnTitles.length > 0) { + for (String columnTitle : columnTitles) { + Font f = new Font(Font.HELVETICA, 8.0f, Font.BOLD, Color.BLACK); + Chunk c = new Chunk(columnTitle, f); + Paragraph p = new Paragraph(c); + p.setAlignment(Element.ALIGN_CENTER); + PdfPCell cell = new PdfPCell(); + cell.setUseAscender(true); + cell.setPadding(5); + cell.setVerticalAlignment(Element.ALIGN_MIDDLE); + cell.addElement(p); + table.addCell(cell); + } + } + for (PdfTableCell cell : cells) { table.addCell(cell.getValue()); } |