public class PdfPTableEventForwarder extends Object implements PdfPTableEventAfterSplit
| Modifier and Type | Field and Description | 
|---|---|
protected ArrayList<PdfPTableEvent> |  
           events 
            
              ArrayList containing all the PageEvents that have to be executed. 
               |  
          
| Constructor and Description | 
|---|
PdfPTableEventForwarder()  |  
          
| Modifier and Type | Method and Description | 
|---|---|
void |  
           addTableEvent(PdfPTableEvent event) 
            
              Add a page event to the forwarder. 
               |  
          
void |  
           afterSplitTable(PdfPTable table, PdfPRow startRow, int startIdx) 
            
              This method is called to indicate that table has been split. 
               |  
          
void |  
           splitTable(PdfPTable table) 
            
              This method is called to indicate that table is being split. 
               |  
          
void |  
           tableLayout(PdfPTable table, float[][] widths, float[] heights, int headerRows, int rowStart, PdfContentByte[] canvases) 
            
              This method is called at the end of the table rendering. 
               |  
          
protected ArrayList<PdfPTableEvent> events
public void addTableEvent(PdfPTableEvent event)
event - an event that has to be added to the forwarder. 
           public void tableLayout(PdfPTable table, float[][] widths, float[] heights, int headerRows, int rowStart, PdfContentByte[] canvases)
PdfPTableEvent 
          PdfContentByte contained in canvases. 
           canvases are: 
           
PdfPTable.BASECANVAS - the original PdfContentByte. Anything placed here will be under the table. PdfPTable.BACKGROUNDCANVAS - the layer where the background goes to. PdfPTable.LINECANVAS - the layer where the lines go to. PdfPTable.TEXTCANVAS - the layer where the text go to. Anything placed here will be over the table.  The widths and heights have the coordinates of the cells.
 The size of the widths array is the number of rows. Each sub-array in widths corresponds to the x column border positions where the first element is the x coordinate of the left table border and the last element is the x coordinate of the right table border. If colspan is not used all the sub-arrays in widths are the same.
 For the heights the first element is the y coordinate of the top table border and the last element is the y coordinate of the bottom table border.
tableLayout in interface PdfPTableEvent 
           table - the PdfPTable in use 
           widths - an array of arrays with the cells' x positions. It has the length of the number of rows 
           heights - an array with the cells' y positions. It has a length of the number of rows + 1 
           headerRows - the number of rows defined for the header. 
           rowStart - the first row number after the header 
           canvases - an array of PdfContentByte 
           PdfPTableEvent.tableLayout(com.itextpdf.text.pdf.PdfPTable, float[][], float[], int, int, com.itextpdf.text.pdf.PdfContentByte[]) 
           public void splitTable(PdfPTable table)
PdfPTableEventSplit 
          tableLayout method and before the table is drawn. 
          splitTable in interface PdfPTableEventSplit 
           table - the PdfPTable in use 
           PdfPTableEventSplit.splitTable(com.itextpdf.text.pdf.PdfPTable) 
           public void afterSplitTable(PdfPTable table, PdfPRow startRow, int startIdx)
PdfPTableEventAfterSplit 
          tableLayout method and after the table has been drawn on the previous page but before the rest of the table is laid out on the following page. It is meant to allow modifications of the table, e.g. by changing cells. This is useful for situations when some information has to be repeated, like putting "still  2012  | Jan | 1000 $ | 2000 $ 
       | Feb |  900 $ | 2100 $
 
 -------8<----- Page break -------------
 
 still | Mar | 1100 $ | 1900 $ 
 2012  | Apr | 1200 $ | 1800 $ 
       | May | 1200 $ | 2200 $
 ...
  While this might be emulated by just stamping "still 2012" on the page using the currently available event callback 
            tableLayout, that would fail in the case of the page break happening after the November line, because the text "still 2012" would then overlap with the new entry "2013" in the 2013 January line. This problem does not exist when modifying the first cell on the new page because that cell will the be laid out to have sufficient height so that no overlaps occur. Example: 
             public void afterSplitTable(PdfPTable table, PdfPRow startRow, int startIdx) { 
     PdfPCell cell = startRow.getCells()[0]; 
     cell.addElement(new Paragraph("still " + currentYear)); 
 }
  Note that determining the value of 
            currentYear can be done in 
            tableLayout by noting the sizes of the tables laid out there and comparing them with the tracked row indices of the years (via table.getRows()). 
           afterSplitTable in interface PdfPTableEventAfterSplit 
           table - the PdfPTable in use 
           startRow - the first PdfPRow of the table body on the following page 
           startIdx - the index of that row 
           PdfPTableEventAfterSplit.afterSplitTable(com.itextpdf.text.pdf.PdfPTable, com.itextpdf.text.pdf.PdfPRow, int) 
           Copyright © 1998–2019. All rights reserved.