Class MultiColumnText

java.lang.Object
com.lowagie.text.pdf.MultiColumnText
All Implemented Interfaces:
Element

public class MultiColumnText extends Object implements Element
Formats content into one or more columns bounded by a rectangle. The columns may be simple rectangles or more complicated shapes. Add all of the columns before adding content. Column continuation is supported. A MultiColumnText object may be added to a document using Document.add.
  • Field Details

    • AUTOMATIC

      public static final float AUTOMATIC
      special constant for automatic calculation of height
      See Also:
    • desiredHeight

      private float desiredHeight
      total desiredHeight of columns. If AUTOMATIC, this means fill pages until done. This may be larger than one page
    • totalHeight

      private float totalHeight
      total height of element written out so far
    • overflow

      private boolean overflow
      true if all the text could not be written out due to height restriction
    • top

      private float top
      Top of the columns - y position on starting page. If AUTOMATIC, it means current y position when added to document
    • columnText

      private ColumnText columnText
      ColumnText object used to do all the real work. This same object is used for all columns
    • columnDefs

      private List<MultiColumnText.ColumnDef> columnDefs
      Array of ColumnDef objects used to define the columns
    • simple

      private boolean simple
      true if all columns are simple (rectangular)
    • currentColumn

      private int currentColumn
    • nextY

      private float nextY
    • columnsRightToLeft

      private boolean columnsRightToLeft
    • document

      private PdfDocument document
  • Constructor Details

    • MultiColumnText

      public MultiColumnText()
      Default constructor. Sets height to AUTOMATIC. Columns will repeat on each page as necessary to accommodate content length.
    • MultiColumnText

      public MultiColumnText(float height)
      Construct a MultiColumnText container of the specified height. If height is AUTOMATIC, fill complete pages until done. If a specific height is used, it may span one or more pages.
      Parameters:
      height - height
    • MultiColumnText

      public MultiColumnText(float top, float height)
      Construct a MultiColumnText container of the specified height starting at the specified Y position.
      Parameters:
      top - top
      height - height
  • Method Details

    • isOverflow

      public boolean isOverflow()
      Indicates that all of the text did not fit in the specified height. Note that isOverflow will return false before the MultiColumnText object has been added to the document. It will always be false if the height is AUTOMATIC.
      Returns:
      true if there is still space left in the column
    • useColumnParams

      public void useColumnParams(ColumnText sourceColumn)
      Copy the parameters from the specified ColumnText to use when rendering. Parameters like setArabicOptions must be set in this way.
      Parameters:
      sourceColumn - source
    • addColumn

      public void addColumn(float[] left, float[] right)
      Add a new column. The parameters are limits for each column wall in the format of a sequence of points (x1,y1,x2,y2,...).
      Parameters:
      left - limits for left column
      right - limits for right column
    • addSimpleColumn

      public void addSimpleColumn(float left, float right)
      Add a simple rectangular column with specified left and right x position boundaries.
      Parameters:
      left - left boundary
      right - right boundary
    • addRegularColumns

      public void addRegularColumns(float left, float right, float gutterWidth, int numColumns)
      Add the specified number of evenly spaced rectangular columns. Columns will be separated by the specified gutterWidth.
      Parameters:
      left - left boundary of first column
      right - right boundary of last column
      gutterWidth - width of gutter spacing between columns
      numColumns - number of columns to add
    • addText

      public void addText(Phrase phrase)
      Adds a Phrase to the current text array. Will not have any effect if addElement() was called before.
      Parameters:
      phrase - the text
      Since:
      2.1.5
    • addText

      public void addText(Chunk chunk)
      Adds a Chunk to the current text array. Will not have any effect if addElement() was called before.
      Parameters:
      chunk - the text
      Since:
      2.1.5
    • addElement

      public void addElement(Element element) throws DocumentException
      Add an element to be rendered in a column. Note that you can only add a Phrase or a Chunk if the columns are not all simple. This is an underlying restriction in ColumnText
      Parameters:
      element - element to add
      Throws:
      DocumentException - if element can't be added
    • write

      public float write(PdfContentByte canvas, PdfDocument document, float documentY) throws DocumentException
      Write out the columns. After writing, use isOverflow() to see if all text was written.
      Parameters:
      canvas - PdfContentByte to write with
      document - document to write to (only used to get page limit info)
      documentY - starting y position to begin writing at
      Returns:
      the current height (y position) after writing the columns
      Throws:
      DocumentException - on error
    • newPage

      private void newPage() throws DocumentException
      Throws:
      DocumentException
    • getHeight

      private float getHeight(float[] left, float[] right)
      Figure out the height of a column from the border extents
      Parameters:
      left - left border
      right - right border
      Returns:
      height
    • process

      public boolean process(ElementListener listener)
      Processes the element by adding it to an ElementListener.
      Specified by:
      process in interface Element
      Parameters:
      listener - an ElementListener
      Returns:
      true if the element was processed successfully
    • type

      public int type()
      Gets the type of the text element.
      Specified by:
      type in interface Element
      Returns:
      a type
    • getChunks

      public ArrayList<Element> getChunks()
      Returns null - not used
      Specified by:
      getChunks in interface Element
      Returns:
      null
    • isContent

      public boolean isContent()
      Description copied from interface: Element
      Checks if this element is a content object. If not, it's a metadata object.
      Specified by:
      isContent in interface Element
      Returns:
      true if this is a 'content' element; false if this is a 'metadata' element
      Since:
      iText 2.0.8
      See Also:
    • isNestable

      public boolean isNestable()
      Description copied from interface: Element
      Checks if this element is nestable.
      Specified by:
      isNestable in interface Element
      Returns:
      true if this element can be nested inside other elements.
      Since:
      iText 2.0.8
      See Also:
    • getColumnBottom

      private float getColumnBottom()
      Calculates the appropriate y position for the bottom of the columns on this page.
      Returns:
      the y position of the bottom of the columns
    • nextColumn

      public void nextColumn() throws DocumentException
      Moves the text insertion point to the beginning of the next column, issuing a page break if needed.
      Throws:
      DocumentException - on error
    • getCurrentColumn

      public int getCurrentColumn()
      Gets the current column.
      Returns:
      the current column
    • resetCurrentColumn

      public void resetCurrentColumn()
      Resets the current column.
    • shiftCurrentColumn

      public boolean shiftCurrentColumn()
      Shifts the current column.
      Returns:
      true if the current column has changed
    • setColumnsRightToLeft

      public void setColumnsRightToLeft(boolean direction)
      Sets the direction of the columns.
      Parameters:
      direction - true = right2left; false = left2right
    • setSpaceCharRatio

      public void setSpaceCharRatio(float spaceCharRatio)
      Sets the ratio between the extra word spacing and the extra character spacing when the text is fully justified. Extra word spacing will grow spaceCharRatio times more than extra character spacing. If the ratio is PdfWriter.NO_SPACE_CHAR_RATIO then the extra character spacing will be zero.
      Parameters:
      spaceCharRatio - the ratio between the extra word spacing and the extra character spacing
    • setRunDirection

      public void setRunDirection(int runDirection)
      Sets the run direction.
      Parameters:
      runDirection - the run direction
    • setArabicOptions

      public void setArabicOptions(int arabicOptions)
      Sets the arabic shaping options. The option can be AR_NOVOWEL, AR_COMPOSEDTASHKEEL and AR_LIG.
      Parameters:
      arabicOptions - the arabic shaping options
    • setAlignment

      public void setAlignment(int alignment)
      Sets the default alignment
      Parameters:
      alignment - the default alignment