com.lowagie.text.pdf

## Class PdfCell

- java.lang.Object
- - com.lowagie.text.Rectangle
  - - com.lowagie.text.pdf.PdfCell

- All Implemented Interfaces:
    Element

      public class PdfCell
      extends Rectangle

  A `PdfCell` is the PDF translation of a `Cell`.

  A `PdfCell` is an `ArrayList` of `PdfLine`s.

  When using variable borders (`isUseVariableBorders()` == true), the borders are drawn completely inside the cell Rectangle so that adjacent cell borders will not overlap. Otherwise, the borders are drawn on top of the edges of the cell Rectangle and will overlap the borders of adjacent cells.

  See Also:
    `Rectangle`, `Cell`, `PdfLine`, `PdfTable`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private float` | `cellpadding` This is the cellpadding of the cell.
    `private float` | `cellspacing` This is the cellspacing of the cell.
    `private float` | `contentHeight` This is the total height of the content of the cell.
    `private PdfLine` | `firstLine`
    `private int` | `groupNumber` This is the number of the group the cell is in.
    `private boolean` | `header` Indicates if this cell belongs to the header of a `PdfTable`
    `private java.util.ArrayList` | `images` These are the Images in the Cell.
    `private PdfLine` | `lastLine`
    `private float` | `leading` This is the leading of the lines.
    `private PdfLine` | `line` These are the PdfLines in the Cell.
    `private java.util.ArrayList` | `lines` These are the PdfLines in the Cell.
    `private int` | `rownumber` This is the number of the row the cell is in.
    `private int` | `rowspan` This is the rowspan of the cell.
    `private boolean` | `useAscender` Indicates that the largest ascender height should be used to determine the height of the first line.
    `private boolean` | `useBorderPadding` Adjusts the cell contents to compensate for border widths.
    `private boolean` | `useDescender` Indicates that the largest descender height should be added to the height of the last line (so characters like y don't dip into the border).
    `private int` | `verticalAlignment`

    - ### 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, useVariableBorders`

    - ### Fields 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
    Constructor and Description
    `PdfCell(Cell cell, int rownumber, float left, float right, float top, float cellspacing, float cellpadding)` Constructs a `PdfCell`-object.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private float` | `addImage(Image i, float left, float right, float extraHeight, int alignment)` Adds an image to this Cell.
    `private void` | `addLine(PdfLine line)`
    `private void` | `addList(List list, float left, float right, int alignment)`
    `float` | `cellpadding()` Gets the cellpadding of a cell..
    `float` | `cellspacing()` Gets the cellspacing of a cell.
    `private float` | `firstLineRealHeight()` Calculates what the height of the first line should be so that the content will be flush with the top.
    `private void` | `flushCurrentLine()`
    `private float` | `getBorderWidthInside(int side)` Gets the amount of the border for the specified side that is inside the Rectangle.
    `float` | `getBottom()` Returns the lower left y-coordinate.
    `int` | `getGroupNumber()` Gets the number of the group this cell is in..
    `java.util.ArrayList` | `getImages(float top, float bottom)` Gets the images of a cell that can be drawn between certain limits.
    `float` | `getLeft()` Returns the lower left x-coordinate.
    `java.util.ArrayList` | `getLines(float top, float bottom)` Gets the lines of a cell that can be drawn between certain limits.
    `float` | `getRight()` Returns the upper right x-coordinate.
    `float` | `getTop()` Returns the upper right y-coordinate.
    `(package private) boolean` | `isHeader()` Checks if this cell belongs to the header of a `PdfTable`.
    `boolean` | `isUseAscender()` Gets the value of useAscender
    `boolean` | `isUseBorderPadding()` Gets the value of useBorderPadding.
    `boolean` | `isUseDescender()` gets the value of useDescender
    `float` | `leading()` Gets the leading of a cell.
    `(package private) boolean` | `mayBeRemoved()` Checks if the cell may be removed.
    `protected void` | `processActions(Element element, PdfAction action, java.util.ArrayList allActions)` Processes all actions contained in the cell.
    `Rectangle` | `rectangle(float top, float bottom)` Gets a Rectangle that is altered to fit on the page.
    `float` | `remainingHeight()` Returns the height needed to draw the remaining text.
    `private float` | `remainingLinesHeight()` Returns the total height of all the lines in the cell.
    `private PdfLine` | `removeLine(int index)`
    `int` | `rownumber()` Gets the number of the row this cell is in..
    `int` | `rowspan()` Gets the rowspan of a cell.
    `void` | `setBottom(float value)` Sets the bottom of the Rectangle and determines the proper {link #verticalOffset} to appropriately align the contents vertically.
    `(package private) void` | `setGroupNumber(int number)` Sets the group number.
    `(package private) void` | `setHeader()` Indicates that this cell belongs to the header of a `PdfTable`.
    `void` | `setUseAscender(boolean use)` Sets the value of useAscender.
    `void` | `setUseBorderPadding(boolean use)` Sets the value of useBorderPadding.
    `void` | `setUseDescender(boolean use)` Sets the value of useDescender.
    `int` | `size()` Returns the number of lines in the cell.

    - ### Methods inherited from class com.lowagie.text.Rectangle

      `cloneNonPositionParameters, disableBorderSide, enableBorderSide, getBackgroundColor, getBorder, getBorderColor, getBorderColorBottom, getBorderColorLeft, getBorderColorRight, getBorderColorTop, getBorderWidth, getBorderWidthBottom, getBorderWidthLeft, getBorderWidthRight, getBorderWidthTop, getBottom, getChunks, getGrayFill, getHeight, getLeft, getRight, getRotation, getTop, getWidth, hasBorder, hasBorders, isContent, isNestable, isUseVariableBorders, normalize, process, rotate, setBackgroundColor, setBorder, setBorderColor, setBorderColorBottom, setBorderColorLeft, setBorderColorRight, setBorderColorTop, setBorderWidth, setBorderWidthBottom, setBorderWidthLeft, setBorderWidthRight, setBorderWidthTop, setGrayFill, setLeft, setRight, setTop, setUseVariableBorders, softCloneNonPositionParameters, toString, type`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### lines

          private java.util.ArrayList lines

      These are the PdfLines in the Cell.

    - #### line

          private PdfLine line

      These are the PdfLines in the Cell.

    - #### images

          private java.util.ArrayList images

      These are the Images in the Cell.

    - #### leading

          private float leading

      This is the leading of the lines.

    - #### rownumber

          private int rownumber

      This is the number of the row the cell is in.

    - #### rowspan

          private int rowspan

      This is the rowspan of the cell.

    - #### cellspacing

          private float cellspacing

      This is the cellspacing of the cell.

    - #### cellpadding

          private float cellpadding

      This is the cellpadding of the cell.

    - #### header

          private boolean header

      Indicates if this cell belongs to the header of a `PdfTable`

    - #### contentHeight

          private float contentHeight

      This is the total height of the content of the cell. Note that the actual cell height may be larger due to another cell on the row *

    - #### useAscender

          private boolean useAscender

      Indicates that the largest ascender height should be used to determine the height of the first line. Setting this to true can help with vertical alignment problems.

    - #### useDescender

          private boolean useDescender

      Indicates that the largest descender height should be added to the height of the last line (so characters like y don't dip into the border).

    - #### useBorderPadding

          private boolean useBorderPadding

      Adjusts the cell contents to compensate for border widths.

    - #### verticalAlignment

          private int verticalAlignment

    - #### firstLine

          private PdfLine firstLine

    - #### lastLine

          private PdfLine lastLine

    - #### groupNumber

          private int groupNumber

      This is the number of the group the cell is in.

  - ### Constructor Detail

    - #### PdfCell

          public PdfCell(Cell cell,
                 int rownumber,
                 float left,
                 float right,
                 float top,
                 float cellspacing,
                 float cellpadding)

      Constructs a `PdfCell`-object.
      Parameters:
        `cell` - the original `Cell`
        `rownumber` - the number of the `Row` the `Cell` was in.
        `left` - the left border of the `PdfCell`
        `right` - the right border of the `PdfCell`
        `top` - the top border of the `PdfCell`
        `cellspacing` - the cellspacing of the `Table`
        `cellpadding` - the cellpadding of the `Table`

  - ### Method Detail

    - #### addList

          private void addList(List list,
                     float left,
                     float right,
                     int alignment)

    - #### setBottom

          public void setBottom(float value)

      Sets the bottom of the Rectangle and determines the proper {link #verticalOffset} to appropriately align the contents vertically.
      Overrides:
        `setBottom` in class `Rectangle`
      Parameters:
        `value` -

    - #### getLeft

          public float getLeft()

      Returns the lower left x-coordinate.
      Overrides:
        `getLeft` in class `Rectangle`
      Returns:
        the lower left x-coordinate

    - #### getRight

          public float getRight()

      Returns the upper right x-coordinate.
      Overrides:
        `getRight` in class `Rectangle`
      Returns:
        the upper right x-coordinate

    - #### getTop

          public float getTop()

      Returns the upper right y-coordinate.
      Overrides:
        `getTop` in class `Rectangle`
      Returns:
        the upper right y-coordinate

    - #### getBottom

          public float getBottom()

      Returns the lower left y-coordinate.
      Overrides:
        `getBottom` in class `Rectangle`
      Returns:
        the lower left y-coordinate

    - #### addLine

          private void addLine(PdfLine line)

    - #### removeLine

          private PdfLine removeLine(int index)

    - #### flushCurrentLine

          private void flushCurrentLine()

    - #### firstLineRealHeight

          private float firstLineRealHeight()

      Calculates what the height of the first line should be so that the content will be flush with the top. For text, this is the height of the ascender. For an image, it is the actual height of the image.
      Returns:
        the real height of the first line

    - #### getBorderWidthInside

          private float getBorderWidthInside(int side)

      Gets the amount of the border for the specified side that is inside the Rectangle. For non-variable width borders this is only 1/2 the border width on that side. This always returns 0 if `useBorderPadding` is false;
      Parameters:
        `side` - the side to check. One of the side constants in `Rectangle`
      Returns:
        the borderwidth inside the cell

    - #### addImage

          private float addImage(Image i,
                       float left,
                       float right,
                       float extraHeight,
                       int alignment)

      Adds an image to this Cell.
      Parameters:
        `i` - the image to add
        `left` - the left border
        `right` - the right border
        `extraHeight` - extra height to add above image
        `alignment` - horizontal alignment (constant from Element class)
      Returns:
        the height of the image

    - #### getLines

          public java.util.ArrayList getLines(float top,
                                     float bottom)

      Gets the lines of a cell that can be drawn between certain limits.

      Remark: all the lines that can be drawn are removed from the object!

      Parameters:
        `top` - the top of the part of the table that can be drawn
        `bottom` - the bottom of the part of the table that can be drawn
      Returns:
        an `ArrayList` of `PdfLine`s

    - #### getImages

          public java.util.ArrayList getImages(float top,
                                      float bottom)

      Gets the images of a cell that can be drawn between certain limits.

      Remark: all the lines that can be drawn are removed from the object!

      Parameters:
        `top` - the top of the part of the table that can be drawn
        `bottom` - the bottom of the part of the table that can be drawn
      Returns:
        an `ArrayList` of `Image`s

    - #### isHeader

          boolean isHeader()

      Checks if this cell belongs to the header of a `PdfTable`.
      Returns:
        `void`

    - #### setHeader

          void setHeader()

      Indicates that this cell belongs to the header of a `PdfTable`.

    - #### mayBeRemoved

          boolean mayBeRemoved()

      Checks if the cell may be removed.

      Headers may always be removed, even if they are drawn only partially: they will be repeated on each following page anyway!

      Returns:
        `true` if all the lines are already drawn; `false` otherwise.

    - #### size

          public int size()

      Returns the number of lines in the cell.
      Returns:
        a value

    - #### remainingLinesHeight

          private float remainingLinesHeight()

      Returns the total height of all the lines in the cell.
      Returns:
        a value

    - #### remainingHeight

          public float remainingHeight()

      Returns the height needed to draw the remaining text.
      Returns:
        a height

    - #### leading

          public float leading()

      Gets the leading of a cell.
      Returns:
        the leading of the lines is the cell.

    - #### rownumber

          public int rownumber()

      Gets the number of the row this cell is in..
      Returns:
        a number

    - #### rowspan

          public int rowspan()

      Gets the rowspan of a cell.
      Returns:
        the rowspan of the cell

    - #### cellspacing

          public float cellspacing()

      Gets the cellspacing of a cell.
      Returns:
        a value

    - #### cellpadding

          public float cellpadding()

      Gets the cellpadding of a cell..
      Returns:
        a value

    - #### processActions

          protected void processActions(Element element,
                            PdfAction action,
                            java.util.ArrayList allActions)

      Processes all actions contained in the cell.
      Parameters:
        `element` - an element in the cell
        `action` - an action that should be coupled to the cell
        `allActions` -

    - #### getGroupNumber

          public int getGroupNumber()

      Gets the number of the group this cell is in..
      Returns:
        a number

    - #### setGroupNumber

          void setGroupNumber(int number)

      Sets the group number.
      Parameters:
        `number` -

    - #### rectangle

          public Rectangle rectangle(float top,
                            float bottom)

      Gets a Rectangle that is altered to fit on the page.
      Overrides:
        `rectangle` in class `Rectangle`
      Parameters:
        `top` - the top position
        `bottom` - the bottom position
      Returns:
        a `Rectangle`

    - #### setUseAscender

          public void setUseAscender(boolean use)

      Sets the value of useAscender.
      Parameters:
        `use` - use ascender height if true

    - #### isUseAscender

          public boolean isUseAscender()

      Gets the value of useAscender
      Returns:
        useAscender

    - #### setUseDescender

          public void setUseDescender(boolean use)

      Sets the value of useDescender.
      Parameters:
        `use` - use descender height if true

    - #### isUseDescender

          public boolean isUseDescender()

      gets the value of useDescender
      Returns:
        useDescender

    - #### setUseBorderPadding

          public void setUseBorderPadding(boolean use)

      Sets the value of useBorderPadding.
      Parameters:
        `use` - adjust layout for borders if true

    - #### isUseBorderPadding

          public boolean isUseBorderPadding()

      Gets the value of useBorderPadding.
      Returns:
        useBorderPadding