Class ColumnText


  • public class ColumnText
    extends java.lang.Object
    Formats text in a columnwise form. The text is bound on the left and on the right by a sequence of lines. This allows the column to have any shape, not only rectangular.

    Several parameters can be set like the first paragraph line indent and extra space between paragraphs.

    A call to the method go will return one of the following situations: the column ended or the text ended.

    If the column ended, a new column definition can be loaded with the method setColumns and the method go can be called again.

    If the text ended, more text can be loaded with addText and the method go can be called again.
    The only limitation is that one or more complete paragraphs must be loaded each time.

    Full bidirectional reordering is supported. If the run direction is PdfWriter.RUN_DIRECTION_RTL the meaning of the horizontal alignments and margins is mirrored.

    Author:
    Paulo Soares
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected int alignment
      The column alignment.
      static int AR_COMPOSEDTASHKEEL
      Compose the tashkeel in the ligatures.
      static int AR_LIG
      Do some extra double ligatures.
      static int AR_NOVOWEL
      Eliminate the arabic vowels
      protected BidiLine bidiLine
      The chunks that form the text.
      protected PdfContentByte canvas
      The PdfContent where the text will be written to.
      protected PdfContentByte[] canvases  
      protected boolean composite  
      protected ColumnText compositeColumn  
      protected java.util.LinkedList<Element> compositeElements  
      protected float currentLeading
      The leading for the current line.
      protected float descender  
      static int DIGIT_TYPE_AN
      Digit type option: Use Arabic-Indic digits (U+0660...U+0669).
      static int DIGIT_TYPE_AN_EXTENDED
      Digit type option: Use Eastern (Extended) Arabic-Indic digits (U+06f0...U+06f9).
      static int DIGITS_AN2EN
      Digit shaping option: Replace Arabic-Indic digits by European digits (U+0030...U+0039).
      static int DIGITS_EN2AN
      Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits.
      static int DIGITS_EN2AN_INIT_AL
      Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits if the most recent strongly directional character is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC).
      static int DIGITS_EN2AN_INIT_LR
      Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits if the most recent strongly directional character is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC).
      protected float extraParagraphSpace
      The extra space between paragraphs.
      protected float fixedLeading
      The fixed text leading.
      protected float followingIndent
      The following paragraph lines indent.
      static float GLOBAL_SPACE_CHAR_RATIO
      the space char ratio
      protected float indent
      The first paragraph line indent.
      protected boolean isWordSplit  
      protected float lastX
      The X position after the last line that has been written.
      protected java.util.ArrayList<float[]> leftWall
      The left column bound.
      protected float leftX  
      protected static int LINE_STATUS_NOLINE
      The line cannot fit this column position.
      protected static int LINE_STATUS_OFFLIMITS
      The line is out the column limits.
      protected static int LINE_STATUS_OK
      The column is valid.
      protected int lineStatus
      The line status when trying to fit a line to a column.
      protected int listIdx  
      protected float maxY
      Upper bound of the column.
      protected float minY
      Lower bound of the column.
      protected float multipliedLeading
      The text leading that is multiplied by the biggest font size in the line.
      static int NO_MORE_COLUMN
      Signals that there is no more column.
      static int NO_MORE_TEXT
      Signals that there is no more text available.
      protected boolean rectangularMode  
      protected float rectangularWidth
      The width of the line when the column is defined as a simple rectangle.
      protected float rightIndent
      The right paragraph lines indent.
      protected java.util.ArrayList<float[]> rightWall
      The right column bound.
      protected float rightX  
      protected int rowIdx
      Pointer for the row in a table that is being dealt with
      protected int runDirection  
      static int START_COLUMN
      Initial value of the status.
      protected Phrase waitPhrase  
      protected float yLine
      The current y line location.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addElement​(Element element)
      Adds an element.
      void addText​(Chunk chunk)
      Adds a Chunk to the current text array.
      void addText​(Phrase phrase)
      Adds a Phrase to the current text array.
      void clearChunks()
      Clears the chunk array.
      protected java.util.ArrayList<float[]> convertColumn​(float[] cLine)
      Converts a sequence of lines representing one of the column bounds into an internal format.
      static ColumnText duplicate​(ColumnText org)
      Creates an independent duplicated of the instance org.
      protected float[] findLimitsOneLine()
      Finds the intersection between the yLine and the two column bounds.
      protected float findLimitsPoint​(java.util.ArrayList<float[]> wall)
      Finds the intersection between the yLine and the column.
      protected float[] findLimitsTwoLines()
      Finds the intersection between the yLine, the yLine-leadingand the two column bounds.
      static float fitText​(Font font, java.lang.String text, Rectangle rect, float maxFontSize, int runDirection)
      Fits the text to some rectangle adjusting the font size as needed.
      int getAlignment()
      Gets the alignment.
      int getArabicOptions()
      Gets the arabic shaping options.
      PdfContentByte getCanvas()
      Gets the canvas.
      PdfContentByte[] getCanvases()
      Gets the canvases.
      java.util.List<Element> getCompositeElements()  
      float getCurrentLeading()
      Gets the currentLeading.
      float getDescender()
      Gets the biggest descender value of the last line written.
      float getExtraParagraphSpace()
      Sets the extra space between paragraphs.
      float getFilledWidth()
      Gets the real width used by the largest line.
      float getFollowingIndent()
      Gets the following paragraph lines indent.
      float getIndent()
      Gets the first paragraph line indent.
      boolean getInheritGraphicState()  
      float getLastX()
      Gets the X position of the end of the last line that has been written (will not work in simulation mode!).
      float getLeading()
      Gets the fixed leading.
      int getLinesWritten()
      Gets the number of lines written.
      float getMultipliedLeading()
      Gets the variable leading.
      float getRightIndent()
      Gets the right paragraph lines indent.
      int getRowsDrawn()
      Gets the number of rows that were drawn when a table is involved.
      int getRunDirection()
      Gets the run direction.
      float getSpaceCharRatio()
      Gets the space/character extra spacing ratio for fully justified text.
      static float getWidth​(Phrase phrase)
      Gets the width that the line will occupy after writing.
      static float getWidth​(Phrase phrase, int runDirection, int arabicOptions)
      Gets the width that the line will occupy after writing.
      float getYLine()
      Gets the yLine.
      int go()
      Outputs the lines to the document.
      int go​(boolean simulate)
      Outputs the lines to the document.
      int go​(boolean simulate, IAccessibleElement elementToGo)  
      protected int goComposite​(boolean simulate)  
      static boolean hasMoreText​(int status)
      Checks the status variable and looks if there's still some text.
      boolean isAdjustFirstLine()
      Gets the first line adjustment property.
      static boolean isAllowedElement​(Element element)  
      boolean isIgnoreSpacingBefore()  
      boolean isUseAscender()
      Checks if UseAscender is enabled/disabled.
      boolean isWordSplit()
      Call this after go() to know if any word was split into several lines.
      ColumnText setACopy​(ColumnText org)
      Makes this instance an independent copy of org.
      void setAdjustFirstLine​(boolean adjustFirstLine)
      Sets the first line adjustment.
      void setAlignment​(int alignment)
      Sets the alignment.
      void setArabicOptions​(int arabicOptions)
      Sets the arabic shaping options.
      void setCanvas​(PdfContentByte canvas)
      Sets the canvas.
      void setCanvases​(PdfContentByte[] canvases)
      Sets the canvases.
      void setColumns​(float[] leftLine, float[] rightLine)
      Sets the columns bounds.
      void setExtraParagraphSpace​(float extraParagraphSpace)
      Sets the extra space between paragraphs.
      void setFilledWidth​(float filledWidth)
      Sets the real width used by the largest line.
      void setFollowingIndent​(float indent)
      Sets the following paragraph lines indent.
      void setIgnoreSpacingBefore​(boolean ignoreSpacingBefore)  
      void setIndent​(float indent)
      Sets the first paragraph line indent.
      void setIndent​(float indent, boolean repeatFirstLineIndent)
      Sets the first paragraph line indent.
      void setInheritGraphicState​(boolean inheritGraphicState)  
      void setLeading​(float leading)
      Sets the leading to fixed.
      void setLeading​(float fixedLeading, float multipliedLeading)
      Sets the leading fixed and variable.
      void setRightIndent​(float indent)
      Sets the right paragraph lines indent.
      void setRunDirection​(int runDirection)
      Sets the run direction.
      void setSimpleColumn​(float llx, float lly, float urx, float ury)
      Simplified method for rectangular columns.
      void setSimpleColumn​(float llx, float lly, float urx, float ury, float leading, int alignment)
      Simplified method for rectangular columns.
      void setSimpleColumn​(Phrase phrase, float llx, float lly, float urx, float ury, float leading, int alignment)
      Simplified method for rectangular columns.
      void setSimpleColumn​(Rectangle rect)
      Simplified method for rectangular columns.
      protected void setSimpleVars​(ColumnText org)  
      void setSpaceCharRatio​(float spaceCharRatio)
      Sets the ratio between the extra word spacing and the extra character spacing when the text is fully justified.
      void setText​(Phrase phrase)
      Replaces the current text array with this Phrase.
      void setUseAscender​(boolean useAscender)
      Enables/Disables adjustment of first line height based on max ascender.
      void setYLine​(float yLine)
      Sets the yLine.
      static void showTextAligned​(PdfContentByte canvas, int alignment, Phrase phrase, float x, float y, float rotation)
      Shows a line of text.
      static void showTextAligned​(PdfContentByte canvas, int alignment, Phrase phrase, float x, float y, float rotation, int runDirection, int arabicOptions)
      Shows a line of text.
      void updateFilledWidth​(float w)
      Replaces the filledWidth if greater than the existing one.
      boolean zeroHeightElement()
      Checks if the element has a height of 0.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • AR_NOVOWEL

        public static final int AR_NOVOWEL
        Eliminate the arabic vowels
        See Also:
        Constant Field Values
      • AR_COMPOSEDTASHKEEL

        public static final int AR_COMPOSEDTASHKEEL
        Compose the tashkeel in the ligatures.
        See Also:
        Constant Field Values
      • DIGITS_EN2AN

        public static final int DIGITS_EN2AN
        Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits.
        See Also:
        Constant Field Values
      • DIGITS_AN2EN

        public static final int DIGITS_AN2EN
        Digit shaping option: Replace Arabic-Indic digits by European digits (U+0030...U+0039).
        See Also:
        Constant Field Values
      • DIGITS_EN2AN_INIT_LR

        public static final int DIGITS_EN2AN_INIT_LR
        Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits if the most recent strongly directional character is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC). The initial state at the start of the text is assumed to be not an Arabic, letter, so European digits at the start of the text will not change. Compare to DIGITS_ALEN2AN_INIT_AL.
        See Also:
        Constant Field Values
      • DIGITS_EN2AN_INIT_AL

        public static final int DIGITS_EN2AN_INIT_AL
        Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits if the most recent strongly directional character is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC). The initial state at the start of the text is assumed to be an Arabic, letter, so European digits at the start of the text will change. Compare to DIGITS_ALEN2AN_INT_LR.
        See Also:
        Constant Field Values
      • DIGIT_TYPE_AN

        public static final int DIGIT_TYPE_AN
        Digit type option: Use Arabic-Indic digits (U+0660...U+0669).
        See Also:
        Constant Field Values
      • DIGIT_TYPE_AN_EXTENDED

        public static final int DIGIT_TYPE_AN_EXTENDED
        Digit type option: Use Eastern (Extended) Arabic-Indic digits (U+06f0...U+06f9).
        See Also:
        Constant Field Values
      • runDirection

        protected int runDirection
      • GLOBAL_SPACE_CHAR_RATIO

        public static final float GLOBAL_SPACE_CHAR_RATIO
        the space char ratio
        See Also:
        Constant Field Values
      • START_COLUMN

        public static final int START_COLUMN
        Initial value of the status.
        See Also:
        Constant Field Values
      • NO_MORE_TEXT

        public static final int NO_MORE_TEXT
        Signals that there is no more text available.
        See Also:
        Constant Field Values
      • NO_MORE_COLUMN

        public static final int NO_MORE_COLUMN
        Signals that there is no more column.
        See Also:
        Constant Field Values
      • LINE_STATUS_OK

        protected static final int LINE_STATUS_OK
        The column is valid.
        See Also:
        Constant Field Values
      • LINE_STATUS_OFFLIMITS

        protected static final int LINE_STATUS_OFFLIMITS
        The line is out the column limits.
        See Also:
        Constant Field Values
      • LINE_STATUS_NOLINE

        protected static final int LINE_STATUS_NOLINE
        The line cannot fit this column position.
        See Also:
        Constant Field Values
      • maxY

        protected float maxY
        Upper bound of the column.
      • minY

        protected float minY
        Lower bound of the column.
      • leftX

        protected float leftX
      • rightX

        protected float rightX
      • alignment

        protected int alignment
        The column alignment. Default is left alignment.
      • leftWall

        protected java.util.ArrayList<float[]> leftWall
        The left column bound.
      • rightWall

        protected java.util.ArrayList<float[]> rightWall
        The right column bound.
      • bidiLine

        protected BidiLine bidiLine
        The chunks that form the text.
      • isWordSplit

        protected boolean isWordSplit
      • yLine

        protected float yLine
        The current y line location. Text will be written at this line minus the leading.
      • lastX

        protected float lastX
        The X position after the last line that has been written.
        Since:
        5.0.3
      • currentLeading

        protected float currentLeading
        The leading for the current line.
      • fixedLeading

        protected float fixedLeading
        The fixed text leading.
      • multipliedLeading

        protected float multipliedLeading
        The text leading that is multiplied by the biggest font size in the line.
      • canvas

        protected PdfContentByte canvas
        The PdfContent where the text will be written to.
      • lineStatus

        protected int lineStatus
        The line status when trying to fit a line to a column.
      • indent

        protected float indent
        The first paragraph line indent.
      • followingIndent

        protected float followingIndent
        The following paragraph lines indent.
      • rightIndent

        protected float rightIndent
        The right paragraph lines indent.
      • extraParagraphSpace

        protected float extraParagraphSpace
        The extra space between paragraphs.
      • rectangularWidth

        protected float rectangularWidth
        The width of the line when the column is defined as a simple rectangle.
      • rectangularMode

        protected boolean rectangularMode
      • descender

        protected float descender
      • composite

        protected boolean composite
      • compositeColumn

        protected ColumnText compositeColumn
      • compositeElements

        protected java.util.LinkedList<Element> compositeElements
      • listIdx

        protected int listIdx
      • rowIdx

        protected int rowIdx
        Pointer for the row in a table that is being dealt with
        Since:
        5.1.0
      • waitPhrase

        protected Phrase waitPhrase
    • Constructor Detail

      • ColumnText

        public ColumnText​(PdfContentByte canvas)
        Creates a ColumnText.
        Parameters:
        canvas - the place where the text will be written to. Can be a template.
    • Method Detail

      • duplicate

        public static ColumnText duplicate​(ColumnText org)
        Creates an independent duplicated of the instance org.
        Parameters:
        org - the original ColumnText
        Returns:
        the duplicated
      • setACopy

        public ColumnText setACopy​(ColumnText org)
        Makes this instance an independent copy of org.
        Parameters:
        org - the original ColumnText
        Returns:
        itself
      • setSimpleVars

        protected void setSimpleVars​(ColumnText org)
      • 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
      • setText

        public void setText​(Phrase phrase)
        Replaces the current text array with this Phrase. Anything added previously with addElement() is lost.
        Parameters:
        phrase - the text
      • 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
      • addElement

        public void addElement​(Element element)
        Adds an element. Elements supported are Paragraph, List, PdfPTable and Image. Also accepts a Chunk and a Phrase, they are placed in a new Paragraph.

        It removes all the text placed with addText().

        Parameters:
        element - the Element
      • isAllowedElement

        public static boolean isAllowedElement​(Element element)
      • convertColumn

        protected java.util.ArrayList<float[]> convertColumn​(float[] cLine)
        Converts a sequence of lines representing one of the column bounds into an internal format.

        Each array element will contain a float[4] representing the line x = ax + b.

        Parameters:
        cLine - the column array
        Returns:
        the converted array
      • findLimitsPoint

        protected float findLimitsPoint​(java.util.ArrayList<float[]> wall)
        Finds the intersection between the yLine and the column. It will set the lineStatus appropriately.
        Parameters:
        wall - the column to intersect
        Returns:
        the x coordinate of the intersection
      • findLimitsOneLine

        protected float[] findLimitsOneLine()
        Finds the intersection between the yLine and the two column bounds. It will set the lineStatus appropriately.
        Returns:
        a float[2]with the x coordinates of the intersection
      • findLimitsTwoLines

        protected float[] findLimitsTwoLines()
        Finds the intersection between the yLine, the yLine-leadingand the two column bounds. It will set the lineStatus appropriately.
        Returns:
        a float[4]with the x coordinates of the intersection
      • setColumns

        public void setColumns​(float[] leftLine,
                               float[] rightLine)
        Sets the columns bounds. Each column bound is described by a float[] with the line points [x1,y1,x2,y2,...]. The array must have at least 4 elements.
        Parameters:
        leftLine - the left column bound
        rightLine - the right column bound
      • setSimpleColumn

        public void setSimpleColumn​(Phrase phrase,
                                    float llx,
                                    float lly,
                                    float urx,
                                    float ury,
                                    float leading,
                                    int alignment)
        Simplified method for rectangular columns.
        Parameters:
        phrase - a Phrase
        llx - the lower left x corner
        lly - the lower left y corner
        urx - the upper right x corner
        ury - the upper right y corner
        leading - the leading
        alignment - the column alignment
      • setSimpleColumn

        public void setSimpleColumn​(float llx,
                                    float lly,
                                    float urx,
                                    float ury,
                                    float leading,
                                    int alignment)
        Simplified method for rectangular columns.
        Parameters:
        llx - the lower left x corner
        lly - the lower left y corner
        urx - the upper right x corner
        ury - the upper right y corner
        leading - the leading
        alignment - the column alignment
      • setSimpleColumn

        public void setSimpleColumn​(float llx,
                                    float lly,
                                    float urx,
                                    float ury)
        Simplified method for rectangular columns.
        Parameters:
        llx -
        lly -
        urx -
        ury -
      • setSimpleColumn

        public void setSimpleColumn​(Rectangle rect)
        Simplified method for rectangular columns.
        Parameters:
        rect - the rectangle for the column
      • setLeading

        public void setLeading​(float leading)
        Sets the leading to fixed.
        Parameters:
        leading - the leading
      • setLeading

        public void setLeading​(float fixedLeading,
                               float multipliedLeading)
        Sets the leading fixed and variable. The resultant leading will be fixedLeading+multipliedLeading*maxFontSize where maxFontSize is the size of the biggest font in the line.
        Parameters:
        fixedLeading - the fixed leading
        multipliedLeading - the variable leading
      • getLeading

        public float getLeading()
        Gets the fixed leading.
        Returns:
        the leading
      • getMultipliedLeading

        public float getMultipliedLeading()
        Gets the variable leading.
        Returns:
        the leading
      • setYLine

        public void setYLine​(float yLine)
        Sets the yLine. The line will be written to yLine-leading.
        Parameters:
        yLine - the yLine
      • getYLine

        public float getYLine()
        Gets the yLine.
        Returns:
        the yLine
      • getRowsDrawn

        public int getRowsDrawn()
        Gets the number of rows that were drawn when a table is involved.
      • setAlignment

        public void setAlignment​(int alignment)
        Sets the alignment.
        Parameters:
        alignment - the alignment
      • getAlignment

        public int getAlignment()
        Gets the alignment.
        Returns:
        the alignment
      • setIndent

        public void setIndent​(float indent)
        Sets the first paragraph line indent.
        Parameters:
        indent - the indent
      • setIndent

        public void setIndent​(float indent,
                              boolean repeatFirstLineIndent)
        Sets the first paragraph line indent.
        Parameters:
        indent - the indent
        repeatFirstLineIndent - do we need to repeat the indentation of the first line after a newline?
      • getIndent

        public float getIndent()
        Gets the first paragraph line indent.
        Returns:
        the indent
      • setFollowingIndent

        public void setFollowingIndent​(float indent)
        Sets the following paragraph lines indent.
        Parameters:
        indent - the indent
      • getFollowingIndent

        public float getFollowingIndent()
        Gets the following paragraph lines indent.
        Returns:
        the indent
      • setRightIndent

        public void setRightIndent​(float indent)
        Sets the right paragraph lines indent.
        Parameters:
        indent - the indent
      • getRightIndent

        public float getRightIndent()
        Gets the right paragraph lines indent.
        Returns:
        the indent
      • getCurrentLeading

        public float getCurrentLeading()
        Gets the currentLeading.
        Returns:
        the currentLeading
      • getInheritGraphicState

        public boolean getInheritGraphicState()
      • setInheritGraphicState

        public void setInheritGraphicState​(boolean inheritGraphicState)
      • isIgnoreSpacingBefore

        public boolean isIgnoreSpacingBefore()
      • setIgnoreSpacingBefore

        public void setIgnoreSpacingBefore​(boolean ignoreSpacingBefore)
      • go

        public int go()
               throws DocumentException
        Outputs the lines to the document. It is equivalent to go(false).
        Returns:
        returns the result of the operation. It can be NO_MORE_TEXT and/or NO_MORE_COLUMN
        Throws:
        DocumentException - on error
      • go

        public int go​(boolean simulate)
               throws DocumentException
        Outputs the lines to the document. The output can be simulated.
        Parameters:
        simulate - true to simulate the writing to the document
        Returns:
        returns the result of the operation. It can be NO_MORE_TEXT and/or NO_MORE_COLUMN
        Throws:
        DocumentException - on error
      • isWordSplit

        public boolean isWordSplit()
        Call this after go() to know if any word was split into several lines.
        Returns:
      • getExtraParagraphSpace

        public float getExtraParagraphSpace()
        Sets the extra space between paragraphs.
        Returns:
        the extra space between paragraphs
      • setExtraParagraphSpace

        public void setExtraParagraphSpace​(float extraParagraphSpace)
        Sets the extra space between paragraphs.
        Parameters:
        extraParagraphSpace - the extra space between paragraphs
      • clearChunks

        public void clearChunks()
        Clears the chunk array. A call to go() will always return NO_MORE_TEXT.
      • getSpaceCharRatio

        public float getSpaceCharRatio()
        Gets the space/character extra spacing ratio for fully justified text.
        Returns:
        the space/character extra spacing ratio
      • 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
      • getRunDirection

        public int getRunDirection()
        Gets the run direction.
        Returns:
        the run direction
      • getLinesWritten

        public int getLinesWritten()
        Gets the number of lines written.
        Returns:
        the number of lines written
      • getLastX

        public float getLastX()
        Gets the X position of the end of the last line that has been written (will not work in simulation mode!).
        Since:
        5.0.3
      • getArabicOptions

        public int getArabicOptions()
        Gets the arabic shaping options.
        Returns:
        the arabic shaping options
      • 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
      • getDescender

        public float getDescender()
        Gets the biggest descender value of the last line written.
        Returns:
        the biggest descender value of the last line written
      • getWidth

        public static float getWidth​(Phrase phrase,
                                     int runDirection,
                                     int arabicOptions)
        Gets the width that the line will occupy after writing. Only the width of the first line is returned.
        Parameters:
        phrase - the Phrase containing the line
        runDirection - the run direction
        arabicOptions - the options for the arabic shaping
        Returns:
        the width of the line
      • getWidth

        public static float getWidth​(Phrase phrase)
        Gets the width that the line will occupy after writing. Only the width of the first line is returned.
        Parameters:
        phrase - the Phrase containing the line
        Returns:
        the width of the line
      • showTextAligned

        public static void showTextAligned​(PdfContentByte canvas,
                                           int alignment,
                                           Phrase phrase,
                                           float x,
                                           float y,
                                           float rotation,
                                           int runDirection,
                                           int arabicOptions)
        Shows a line of text. Only the first line is written.
        Parameters:
        canvas - where the text is to be written to
        alignment - the alignment. It is not influenced by the run direction
        phrase - the Phrase with the text
        x - the x reference position
        y - the y reference position
        rotation - the rotation to be applied in degrees counterclockwise
        runDirection - the run direction
        arabicOptions - the options for the arabic shaping
      • showTextAligned

        public static void showTextAligned​(PdfContentByte canvas,
                                           int alignment,
                                           Phrase phrase,
                                           float x,
                                           float y,
                                           float rotation)
        Shows a line of text. Only the first line is written.
        Parameters:
        canvas - where the text is to be written to
        alignment - the alignment
        phrase - the Phrase with the text
        x - the x reference position
        y - the y reference position
        rotation - the rotation to be applied in degrees counterclockwise
      • fitText

        public static float fitText​(Font font,
                                    java.lang.String text,
                                    Rectangle rect,
                                    float maxFontSize,
                                    int runDirection)
        Fits the text to some rectangle adjusting the font size as needed.
        Parameters:
        font - the font to use
        text - the text
        rect - the rectangle where the text must fit
        maxFontSize - the maximum font size
        runDirection - the run direction
        Returns:
        the calculated font size that makes the text fit
      • getCanvas

        public PdfContentByte getCanvas()
        Gets the canvas. If a set of four canvases exists, the TEXTCANVAS is returned.
        Returns:
        a PdfContentByte.
      • setCanvas

        public void setCanvas​(PdfContentByte canvas)
        Sets the canvas. If before a set of four canvases was set, it is being unset.
        Parameters:
        canvas -
      • setCanvases

        public void setCanvases​(PdfContentByte[] canvases)
        Sets the canvases.
        Parameters:
        canvases -
      • getCanvases

        public PdfContentByte[] getCanvases()
        Gets the canvases.
        Returns:
        an array of PdfContentByte
      • zeroHeightElement

        public boolean zeroHeightElement()
        Checks if the element has a height of 0.
        Returns:
        true or false
        Since:
        2.1.2
      • getCompositeElements

        public java.util.List<Element> getCompositeElements()
      • isUseAscender

        public boolean isUseAscender()
        Checks if UseAscender is enabled/disabled.
        Returns:
        true is the adjustment of the first line height is based on max ascender.
      • setUseAscender

        public void setUseAscender​(boolean useAscender)
        Enables/Disables adjustment of first line height based on max ascender.
        Parameters:
        useAscender - enable adjustment if true
      • hasMoreText

        public static boolean hasMoreText​(int status)
        Checks the status variable and looks if there's still some text.
      • getFilledWidth

        public float getFilledWidth()
        Gets the real width used by the largest line.
        Returns:
        the real width used by the largest line
      • setFilledWidth

        public void setFilledWidth​(float filledWidth)
        Sets the real width used by the largest line. Only used to set it to zero to start another measurement.
        Parameters:
        filledWidth - the real width used by the largest line
      • updateFilledWidth

        public void updateFilledWidth​(float w)
        Replaces the filledWidth if greater than the existing one.
        Parameters:
        w - the new filledWidth if greater than the existing one
      • isAdjustFirstLine

        public boolean isAdjustFirstLine()
        Gets the first line adjustment property.
        Returns:
        the first line adjustment property.
      • setAdjustFirstLine

        public void setAdjustFirstLine​(boolean adjustFirstLine)
        Sets the first line adjustment. Some objects have properties, like spacing before, that behave differently if the object is the first to be written after go() or not. The first line adjustment is true by default but can be changed if several objects are to be placed one after the other in the same column calling go() several times.
        Parameters:
        adjustFirstLine - true to adjust the first line, false otherwise