Package com.aowagie.text.pdf
Class MultiColumnText
- java.lang.Object
-
- com.aowagie.text.pdf.MultiColumnText
-
- All Implemented Interfaces:
Element
public class MultiColumnText extends java.lang.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 usingDocument.add.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classMultiColumnText.ColumnDefInner class used to define a column
-
Field Summary
Fields Modifier and Type Field Description static floatAUTOMATICspecial constant for automatic calculation of heightprivate java.util.ArrayListcolumnDefsArray ofColumnDefobjects used to define the columnsprivate booleancolumnsRightToLeftprivate ColumnTextcolumnTextColumnText object used to do all the real work.private intcurrentColumnprivate floatdesiredHeighttotal desiredHeight of columns.private PdfDocumentdocumentprivate floatnextYprivate booleanoverflowtrue if all the text could not be written out due to height restrictionprivate booleansimpletrue if all columns are simple (rectangular)private floattopTop of the columns - y position on starting page.private floattotalHeighttotal height of element written out so far-
Fields inherited from interface com.aowagie.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 Description MultiColumnText()Default constructor.MultiColumnText(float height)Construct a MultiColumnText container of the specified height.MultiColumnText(float top, float height)Construct a MultiColumnText container of the specified height starting at the specified Y position.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddColumn(float[] left, float[] right)Add a new column.voidaddElement(Element element)Add an element to be rendered in a column.voidaddRegularColumns(float left, float right, float gutterWidth, int numColumns)Add the specified number of evenly spaced rectangular columns.voidaddSimpleColumn(float left, float right)Add a simple rectangular column with specified left and right x position boundaries.voidaddText(Chunk chunk)Adds aChunkto the current text array.voidaddText(Phrase phrase)Adds aPhraseto the current text array.java.util.ArrayListgetChunks()Returns null - not usedprivate floatgetColumnBottom()Calculates the appropriate y position for the bottom of the columns on this page.intgetCurrentColumn()Gets the current column.private floatgetHeight(float[] left, float[] right)Figure out the height of a column from the border extentsbooleanisContent()Checks if this element is a content object.booleanisNestable()Checks if this element is nestable.booleanisOverflow()Indicates that all of the text did not fit in the specified height.private voidnewPage()voidnextColumn()Moves the text insertion point to the beginning of the next column, issuing a page break if needed.booleanprocess(ElementListener listener)Processes the element by adding it to anElementListener.voidresetCurrentColumn()Resets the current column.voidsetAlignment(int alignment)Sets the default alignmentvoidsetArabicOptions(int arabicOptions)Sets the arabic shaping options.voidsetColumnsRightToLeft(boolean direction)Sets the direction of the columns.voidsetRunDirection(int runDirection)Sets the run direction.voidsetSpaceCharRatio(float spaceCharRatio)Sets the ratio between the extra word spacing and the extra character spacing when the text is fully justified.booleanshiftCurrentColumn()Shifts the current column.inttype()Gets the type of the text element.voiduseColumnParams(ColumnText sourceColumn)Copy the parameters from the specified ColumnText to use when rendering.floatwrite(PdfContentByte canvas, PdfDocument document, float documentY)Write out the columns.
-
-
-
Field Detail
-
AUTOMATIC
public static final float AUTOMATIC
special constant for automatic calculation of height- See Also:
- Constant Field Values
-
desiredHeight
private final float desiredHeight
total desiredHeight of columns. IfAUTOMATIC, 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. IfAUTOMATIC, it means current y position when added to document
-
columnText
private final ColumnText columnText
ColumnText object used to do all the real work. This same object is used for all columns
-
columnDefs
private final java.util.ArrayList columnDefs
Array ofColumnDefobjects 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 Detail
-
MultiColumnText
public MultiColumnText()
Default constructor. Sets height toAUTOMATIC. 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 isAUTOMATIC, fill complete pages until done. If a specific height is used, it may span one or more pages.- Parameters:
height- height to set
-
MultiColumnText
public MultiColumnText(float top, float height)Construct a MultiColumnText container of the specified height starting at the specified Y position.- Parameters:
height- height to settop- top to set
-
-
Method Detail
-
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 likesetArabicOptionsmust be set in this way.- Parameters:
sourceColumn- column from copy
-
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 columnright- 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 boundaryright- 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 columnright- right boundary of last columngutterWidth- width of gutter spacing between columnsnumColumns- number of columns to add
-
addText
public void addText(Phrase phrase)
Adds aPhraseto 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 aChunkto 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 aPhraseor aChunkif the columns are not all simple. This is an underlying restriction inColumnText- 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, useisOverflow()to see if all text was written.- Parameters:
canvas- PdfContentByte to write withdocument- 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 borderright- right border- Returns:
- height
-
process
public boolean process(ElementListener listener)
Processes the element by adding it to anElementListener.
-
type
public int type()
Gets the type of the text element.
-
getChunks
public java.util.ArrayList getChunks()
Returns null - not used
-
isContent
public boolean isContent()
Description copied from interface:ElementChecks if this element is a content object. If not, it's a metadata object.- Specified by:
isContentin interfaceElement- Returns:
- true if this is a 'content' element; false if this is a 'metadata' element
- Since:
- iText 2.0.8
- See Also:
Element.isContent()
-
isNestable
public boolean isNestable()
Description copied from interface:ElementChecks if this element is nestable.- Specified by:
isNestablein interfaceElement- Returns:
- true if this element can be nested inside other elements.
- Since:
- iText 2.0.8
- See Also:
Element.isNestable()
-
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 DocumentExceptionMoves 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 growspaceCharRatiotimes more than extra character spacing. If the ratio isPdfWriter.NO_SPACE_CHAR_RATIOthen 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
-
-