Class Table
- All Implemented Interfaces:
Element,LargeElement
Table is a Rectangle that contains Cells,
ordered in some kind of matrix.
Tables that span multiple pages are cut into different parts automatically.
If you want a table header to be repeated on every page, you may not forget to
mark the end of the header section by using the method endHeaders().
The matrix of a table is not necessarily an m x n-matrix. It can contain holes
or cells that are bigger than the unit. Believe me or not, but it took some serious
thinking to make this as user friendly as possible. I hope you will find the result
quite simple (I love simple solutions, especially for complex problems).
I didn't want it to be something as complex as the Java GridBagLayout.
Example:
// Remark: You MUST know the number of columns when constructing a Table.
// The number of rows is not important.
Table table = new Table(3);
table.setBorderWidth(1);
table.setBorderColor(new Color(0, 0, 255));
table.setPadding(5);
table.setSpacing(5);
Cell cell = new Cell("header");
cell.setHeader(true);
cell.setColspan(3);
table.addCell(cell);
table.endHeaders();
cell = new Cell("example cell with colspan 1 and rowspan 2");
cell.setRowspan(2);
cell.setBorderColor(new Color(255, 0, 0));
table.addCell(cell);
table.addCell("1.1");
table.addCell("2.1");
table.addCell("1.2");
table.addCell("2.2");
table.addCell("cell test1");
cell = new Cell("big cell");
cell.setRowspan(2);
cell.setColspan(2);
table.addCell(cell);
table.addCell("cell test2");
The result of this code is a table:
| header | ||
|---|---|---|
| example cell with colspan 1 and rowspan 2 | 1.1 | 2.1 |
| 1.2 | 2.2 | |
| cell test1 | big cell | |
| cell test2 | ||
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanBoolean to automatically fill empty cells before a table is rendered (takes CPU so may be set to false in case of certainty)protected booleanIndicates if the PdfPTable is complete once added to the document.protected booleanif you want to generate tables the old way, set this value to false.protected booleanIndicates if this is the first time the section was added.Fields inherited from class com.lowagie.text.Rectangle
backgroundColor, border, borderColor, borderColorBottom, borderColorLeft, borderColorRight, borderColorTop, borderWidth, borderWidthBottom, borderWidthLeft, borderWidthRight, borderWidthTop, BOTTOM, BOX, LEFT, llx, lly, NO_BORDER, RIGHT, rotation, TOP, UNDEFINED, urx, ury, useVariableBordersFields inherited from interface com.lowagie.text.Element
ALIGN_BASELINE, ALIGN_BOTTOM, ALIGN_CENTER, ALIGN_JUSTIFIED, ALIGN_JUSTIFIED_ALL, ALIGN_LEFT, ALIGN_MIDDLE, ALIGN_RIGHT, ALIGN_TOP, ALIGN_UNDEFINED, ANCHOR, ANNOTATION, AUTHOR, CCITT_BLACKIS1, CCITT_ENCODEDBYTEALIGN, CCITT_ENDOFBLOCK, CCITT_ENDOFLINE, CCITTG3_1D, CCITTG3_2D, CCITTG4, CELL, CHAPTER, CHUNK, CREATIONDATE, CREATOR, HEADER, IMGRAW, IMGTEMPLATE, JBIG2, JPEG, JPEG2000, KEYWORDS, LIST, LISTITEM, MARKED, MULTI_COLUMN_TEXT, PARAGRAPH, PHRASE, PRODUCER, PTABLE, RECTANGLE, ROW, SECTION, SUBJECT, TABLE, TITLE, YMARK -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds aCellto theTable.voidAdds aCellto theTableat a certain row and column.voidAdds aCellto theTableat a certain location.voidAdds aCellto theTable.voidAdds aCellto theTable.voidAdds aCellto theTable.voidAdds aCellto theTable.voidaddColumns(int aColumns) Gives you the possibility to add columns.voidcomplete()Will fill empty cells with valid blankCellsCreate a PdfPTable based on this Table object.voidDeletes all rows in this table.voiddeleteColumn(int column) Deletes a column in this table.booleanDeletes the last row in this table.booleandeleteRow(int row) Deletes a row.intMarks the last row of the table headers.voidFlushes the content that has been added.intGets the horizontal alignment.Gets all the chunks in this element.intGets the number of columns.Gets the default layout of the Table.Deprecated.Gets the dimension of this tablegetElement(int row, int column) returns the element at the position row, column (Cast to Cell or Table)intGets the last number of the rows that contain headers.floatGets the offset of this table.floatGets the cellpadding.float[]Gets the proportional widths of the columns in thisTable.floatGets the cellspacing.floatgetWidth()Gets the table width (a percentage).float[]getWidths(float left, float totalWidth) Gets an array with the positions of the borders between every column.voidinsertTable(Table aTable) To put a table within the existing table at the current position generateTable will of course re-arrange the widths of the columns.voidinsertTable(Table aTable, int row, int column) To put a table within the existing table at the given position generateTable will of course re-arrange the widths of the columns.voidinsertTable(Table aTable, Point aLocation) To put a table within the existing table at the given position generateTable will of course re-arrange the widths of the columns.booleanChecks if the cells of thisTablehave to fit a page.booleanIndicates if the element is complete or not.booleanMethod to check if the Table should be converted to a PdfPTable or not.booleanisLocked()booleanChecks if this element is nestable.booleanIndicates if this is the first time the section is added.booleanChecks if thisTablehas to fit a page.iterator()Gets anIteratorof all theRows.booleanprocess(ElementListener listener) Processes the element by adding it (or the different parts) to anElementListener.voidsetAlignment(int value) Sets the horizontal alignment.voidsetAlignment(String alignment) Sets the alignment of this paragraph.voidsetAutoFillEmptyCells(boolean aDoAutoFill) Enables/disables automatic insertion of empty cells before table is rendered.voidsetCellsFitPage(boolean fitPage) Allows you to control when a page break occurs.voidsetComplete(boolean complete) If you invoke setComplete(false), you indicate that the content of the object isn't complete yet; it can be added to the document partially, but more will follow.voidsetConvert2pdfptable(boolean convert2pdfptable) If set to true, iText will try to convert the Table to a PdfPTable.voidsetDefaultCell(Cell value) Sets the default layout of the Table to the provided CellvoidsetDefaultLayout(Cell value) Deprecated.As of iText 2.0.7, replaced bysetDefaultCell(Cell), scheduled for removal at 2.2.0voidsetLastHeaderRow(int value) Sets the horizontal alignment.voidsetLocked(boolean locked) voidsetNotAddedYet(boolean notAddedYet) Sets the indication if the section was already added to the document.voidsetOffset(float offset) Sets the offset of this table.voidsetPadding(float value) Sets the cellpadding.voidsetSpacing(float value) Sets the cellspacing.voidsetTableFitsPage(boolean fitPage) Allows you to control when a page break occurs.voidsetWidth(float width) Sets the width of this table (in percentage of the available space).voidsetWidths(float[] widths) Sets the widths of the different columns (percentages).voidsetWidths(int[] widths) Sets the widths of the different columns (percentages).intsize()Gets the number of rows in thisTable.inttype()Gets the type of the text element.Methods inherited from class com.lowagie.text.Rectangle
cloneNonPositionParameters, disableBorderSide, enableBorderSide, getBackgroundColor, getBorder, getBorderColor, getBorderColorBottom, getBorderColorLeft, getBorderColorRight, getBorderColorTop, getBorderWidth, getBorderWidthBottom, getBorderWidthLeft, getBorderWidthRight, getBorderWidthTop, getBottom, getBottom, getGrayFill, getHeight, getLeft, getLeft, getRight, getRight, getRotation, getTop, getTop, hasBorder, hasBorders, isContent, isUseVariableBorders, normalize, rectangle, rotate, setBackgroundColor, setBorder, setBorderColor, setBorderColorBottom, setBorderColorLeft, setBorderColorRight, setBorderColorTop, setBorderWidth, setBorderWidthBottom, setBorderWidthLeft, setBorderWidthRight, setBorderWidthTop, setBottom, setGrayFill, setLeft, setRight, setTop, setUseVariableBorders, softCloneNonPositionParameters, toString
-
Field Details
-
autoFillEmptyCells
protected boolean autoFillEmptyCellsBoolean to automatically fill empty cells before a table is rendered (takes CPU so may be set to false in case of certainty) -
convert2pdfptable
protected boolean convert2pdfptableif you want to generate tables the old way, set this value to false. -
notAddedYet
protected boolean notAddedYetIndicates if this is the first time the section was added.- Since:
- iText 2.0.8
-
complete
protected boolean completeIndicates if the PdfPTable is complete once added to the document.- Since:
- iText 2.0.8
-
-
Constructor Details
-
Table
Constructs aTablewith a certain number of columns.- Parameters:
columns- The number of columns in the table- Throws:
BadElementException- if the creator was called with less than 1 column
-
Table
Constructs aTablewith a certain number of columns and a certain number ofRows.- Parameters:
columns- The number of columns in the tablerows- The number of rows- Throws:
BadElementException- if the creator was called with less than 1 column
-
Table
Copy constructor (shallow copy).
-
-
Method Details
-
process
Processes the element by adding it (or the different parts) to anElementListener. -
type
public int type()Gets the type of the text element. -
getChunks
Gets all the chunks in this element. -
isNestable
public boolean isNestable()Description copied from interface:ElementChecks if this element is nestable.- Specified by:
isNestablein interfaceElement- Overrides:
isNestablein classRectangle- Returns:
- true if this element can be nested inside other elements.
- Since:
- iText 2.0.8
- See Also:
-
getColumns
public int getColumns()Gets the number of columns.- Returns:
- a value
-
size
public int size()Gets the number of rows in thisTable.- Returns:
- the number of rows in this
Table
-
getDimension
Gets the dimension of this table- Returns:
- dimension
-
getDefaultCell
Gets the default layout of the Table.- Returns:
- a cell with all the defaults
- Since:
- 2.0.7
-
setDefaultCell
Sets the default layout of the Table to the provided Cell- Parameters:
value- a cell with all the defaults- Since:
- 2.0.7
-
getLastHeaderRow
public int getLastHeaderRow()Gets the last number of the rows that contain headers.- Returns:
- a rownumber
-
setLastHeaderRow
public void setLastHeaderRow(int value) Sets the horizontal alignment.- Parameters:
value- the new value
-
endHeaders
public int endHeaders()Marks the last row of the table headers.- Returns:
- the number of the last row of the table headers
-
getAlignment
public int getAlignment()Gets the horizontal alignment.- Returns:
- a value
-
setAlignment
public void setAlignment(int value) Sets the horizontal alignment.- Parameters:
value- the new value
-
setAlignment
Sets the alignment of this paragraph.- Parameters:
alignment- the new alignment as aString
-
getPadding
public float getPadding()Gets the cellpadding.- Returns:
- a value
-
setPadding
public void setPadding(float value) Sets the cellpadding.- Parameters:
value- the new value
-
getSpacing
public float getSpacing()Gets the cellspacing.- Returns:
- a value
-
setSpacing
public void setSpacing(float value) Sets the cellspacing.- Parameters:
value- the new value
-
setAutoFillEmptyCells
public void setAutoFillEmptyCells(boolean aDoAutoFill) Enables/disables automatic insertion of empty cells before table is rendered. (default = false) As some people may want to create a table, fill only a couple of the cells and don't bother with investigating which empty ones need to be added, this default behavior may be very welcome. Disabling is recommended to increase speed. (empty cells should be added through extra code then)- Parameters:
aDoAutoFill- enable/disable autofill
-
getWidth
public float getWidth()Gets the table width (a percentage). -
setWidth
public void setWidth(float width) Sets the width of this table (in percentage of the available space).- Parameters:
width- the width
-
isLocked
public boolean isLocked()- Returns:
- the locked
-
setLocked
public void setLocked(boolean locked) - Parameters:
locked- the locked to set
-
getProportionalWidths
public float[] getProportionalWidths()Gets the proportional widths of the columns in thisTable.- Returns:
- the proportional widths of the columns in this
Table
-
setWidths
Sets the widths of the different columns (percentages).You can give up relative values of borderwidths. The sum of these values will be considered 100%. The values will be recalculated as percentages of this sum.
example:
The widths will be: a width of 50% for the first column, 25% for the second and third column.float[] widths = {2, 1, 1}; table.setWidths(widths)- Parameters:
widths- an array with values- Throws:
BadElementException
-
setWidths
Sets the widths of the different columns (percentages).You can give up relative values of borderwidths. The sum of these values will be considered 100%. The values will be recalculated as percentages of this sum.
- Parameters:
widths- an array with values- Throws:
DocumentException
-
isTableFitsPage
public boolean isTableFitsPage()Checks if thisTablehas to fit a page.- Returns:
- true if the table may not be split
-
setTableFitsPage
public void setTableFitsPage(boolean fitPage) Allows you to control when a page break occurs.When a table doesn't fit a page, it is split in two parts. If you want to avoid this, you should set the tableFitsPage value to true.
- Parameters:
fitPage- enter true if you don't want to split cells
-
isCellsFitPage
public boolean isCellsFitPage()Checks if the cells of thisTablehave to fit a page.- Returns:
- true if the cells may not be split
-
setCellsFitPage
public void setCellsFitPage(boolean fitPage) Allows you to control when a page break occurs.When a cell doesn't fit a page, it is split in two parts. If you want to avoid this, you should set the cellsFitPage value to true.
- Parameters:
fitPage- enter true if you don't want to split cells
-
setOffset
public void setOffset(float offset) Sets the offset of this table. Normally a newline is added before you add a Table object. This newline uses the current leading. If you want to control the space between the table and the previous element yourself, you have to set the offset of this table.- Parameters:
offset- the space between this table and the previous object.
-
getOffset
public float getOffset()Gets the offset of this table.- Returns:
- the space between this table and the previous element.
-
isConvert2pdfptable
public boolean isConvert2pdfptable()Method to check if the Table should be converted to a PdfPTable or not.- Returns:
- false if the table should be handled the old fashioned way.
-
setConvert2pdfptable
public void setConvert2pdfptable(boolean convert2pdfptable) If set to true, iText will try to convert the Table to a PdfPTable.- Parameters:
convert2pdfptable- true if you want iText to try to convert the Table to a PdfPTable
-
addCell
Adds aCellto theTableat a certain row and column.- Parameters:
aCell- TheCellto addrow- The row where theCellwill be addedcolumn- The column where theCellwill be added- Throws:
BadElementException
-
addCell
Adds aCellto theTableat a certain location.- Parameters:
aCell- TheCellto addaLocation- The location where theCellwill be added- Throws:
BadElementException
-
addCell
Adds aCellto theTable.- Parameters:
cell- aCell
-
addCell
Adds aCellto theTable.This is a shortcut for
addCell(Cell cell). ThePhrasewill be converted to aCell.- Parameters:
content- aPhrase- Throws:
BadElementException- this should never happen
-
addCell
Adds aCellto theTable.This is a shortcut for
addCell(Cell cell, Point location). ThePhrasewill be converted to aCell.- Parameters:
content- aPhraselocation- aPoint- Throws:
BadElementException- this should never happen
-
addCell
Adds aCellto theTable.This is a shortcut for
addCell(Cell cell). TheStringwill be converted to aCell.- Parameters:
content- aString- Throws:
BadElementException- this should never happen
-
addCell
Adds aCellto theTable.This is a shortcut for
addCell(Cell cell, Point location). TheStringwill be converted to aCell.- Parameters:
content- aStringlocation- aPoint- Throws:
BadElementException- this should never happen
-
insertTable
To put a table within the existing table at the current position generateTable will of course re-arrange the widths of the columns.- Parameters:
aTable- the table you want to insert
-
insertTable
To put a table within the existing table at the given position generateTable will of course re-arrange the widths of the columns.- Parameters:
aTable- TheTableto addrow- The row where theCellwill be addedcolumn- The column where theCellwill be added
-
insertTable
To put a table within the existing table at the given position generateTable will of course re-arrange the widths of the columns.- Parameters:
aTable- the table you want to insertaLocation- aPoint
-
addColumns
public void addColumns(int aColumns) Gives you the possibility to add columns.- Parameters:
aColumns- the number of columns to add
-
deleteColumn
Deletes a column in this table.- Parameters:
column- the number of the column that has to be deleted- Throws:
BadElementException
-
deleteRow
public boolean deleteRow(int row) Deletes a row.- Parameters:
row- the number of the row to delete- Returns:
- boolean
trueif the row was deleted;falseif not
-
deleteAllRows
public void deleteAllRows()Deletes all rows in this table. (contributed by dperezcar@fcc.es) -
deleteLastRow
public boolean deleteLastRow()Deletes the last row in this table.- Returns:
- boolean
trueif the row was deleted;falseif not
-
complete
public void complete()Will fill empty cells with valid blankCells -
getElement
returns the element at the position row, column (Cast to Cell or Table)- Parameters:
row-column-- Returns:
- dimension
- Since:
- 2.1.0 (was made private in 2.0.3)
-
getWidths
public float[] getWidths(float left, float totalWidth) Gets an array with the positions of the borders between every column.This method translates the widths expressed in percentages into the x-coordinate of the borders of the columns on a real document.
- Parameters:
left- this is the position of the first border at the left (cellpadding not included)totalWidth- this is the space between the first border at the left and the last border at the right (cellpadding not included)- Returns:
- an array with border positions
-
iterator
Gets anIteratorof all theRows.- Returns:
- an
Iterator
-
createPdfPTable
Create a PdfPTable based on this Table object.- Returns:
- a PdfPTable object
- Throws:
BadElementException
-
isNotAddedYet
public boolean isNotAddedYet()Indicates if this is the first time the section is added.- Returns:
- true if the section wasn't added yet
- Since:
- iText2.0.8
-
setNotAddedYet
public void setNotAddedYet(boolean notAddedYet) Sets the indication if the section was already added to the document.- Parameters:
notAddedYet-- Since:
- iText2.0.8
-
flushContent
public void flushContent()Description copied from interface:LargeElementFlushes the content that has been added.- Specified by:
flushContentin interfaceLargeElement- Since:
- iText 2.0.8
- See Also:
-
isComplete
public boolean isComplete()Description copied from interface:LargeElementIndicates if the element is complete or not.- Specified by:
isCompletein interfaceLargeElement- Returns:
- indicates if the element is complete according to the user.
- Since:
- iText 2.0.8
- See Also:
-
setComplete
public void setComplete(boolean complete) Description copied from interface:LargeElementIf you invoke setComplete(false), you indicate that the content of the object isn't complete yet; it can be added to the document partially, but more will follow. If you invoke setComplete(true), you indicate that you won't add any more data to the object.- Specified by:
setCompletein interfaceLargeElement- Parameters:
complete- false if you'll be adding more data after adding the object to the document.- Since:
- iText 2.0.8
- See Also:
-
getDefaultLayout
Deprecated.As of iText 2.0.7, replaced bygetDefaultCell(), scheduled for removal at 2.2.0Gets the default layout of the Table.- Returns:
- a cell with all the defaults
-
setDefaultLayout
Deprecated.As of iText 2.0.7, replaced bysetDefaultCell(Cell), scheduled for removal at 2.2.0Sets the default layout of the Table to the provided Cell- Parameters:
value- a cell with all the defaults
-
getDefaultCell(), scheduled for removal at 2.2.0