Class TextRenderer
- All Implemented Interfaces:
-
IPropertyContainer,ILeafElementRenderer,IRenderer
- Direct Known Subclasses:
-
LinkRenderer
renderer object for a Text object. It will draw the glyphs of the textual content on the DrawContext.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected GlyphLineprotected booleanprotected Listprotected GlyphLineprotected Stringprotected floatprotected GlyphLineprotected static final floatprotected floatFields inherited from class com.itextpdf.layout.renderer.AbstractRenderer
childRenderers, EPS, flushed, INF, isLastRendererForModelElement, modelElement, occupiedArea, OVERLAP_EPSILON, parent, positionedRenderers, properties -
Constructor Summary
ConstructorsModifierConstructorDescriptionTextRenderer(Text textElement) Creates a TextRenderer from its corresponding layout object.TextRenderer(Text textElement, String text) Creates a TextRenderer from its corresponding layout object, with a custom text to replace the contents of theText.protectedTextRenderer(TextRenderer other) -
Method Summary
Modifier and TypeMethodDescriptionvoidapplyOtf()protected intstatic float[]Get ascender and descender from font metrics.static float[]calculateAscenderDescender(PdfFont font, RenderingMode mode) Get ascender and descender from font metrics.protected floatintcharAt(int pos) Gets char code at given position for the text belonging to this renderer.protected TextRenderercreateCopy(GlyphLine gl, PdfFont font) protected TextRendererprotected TextRenderervoiddraw(DrawContext drawContext) Flushes the renderer subtree contents, i.e.protected voiddrawSingleUnderline(Underline underline, TransparentColor fontColor, PdfCanvas canvas, float fontSize, float italicAngleTan) floatGets the maximum offset above the base line that this Text extends to.protected RectanglegetBackgroundArea(Rectangle occupiedAreaWithMargins) Evaluate the actual backgroundfloatGets the maximum offset below the base line that this Text extends to.protected FloatGets the first yLine of the nested children recursively.protected FloatCalculates min and max width values for current renderer.Gets a new instance of this class to be used as a next renderer, after this renderer is used, iflayout(LayoutContext)is called more than once.protected intfloatgetText()floatgetYLine()Gets the position on the canvas of the imaginary horizontal line upon which theText's contents will be written.layout(LayoutContext layoutContext) This method simulates positioning of the renderer, including all of its children, and returns theLayoutResult, representing the layout result, including occupied area, status, i.e.intlength()The length of the whole text assigned to this renderer.protected intReturns the length of thelinewhich is the result of the layout call.voidmoveYLineTo(float y) Moves the vertical position to the parameter's value.protected booleanresolveFonts(List<IRenderer> addTo) ResolveProperty.FONTString[] value.protected voidsetProcessedGlyphLineAndFont(GlyphLine gl, PdfFont font) voidManually set a GlyphLine and PdfFont for rendering.voidManually sets the contents of the Text's representation on the canvas, regardless of the Text's own contents.protected TextRenderer[]split(int initialOverflowTextPos) toString()Returns a string representation of the renderer.voidTrims any whitespace characters from the start of theGlyphLineto be rendered.Methods inherited from class com.itextpdf.layout.renderer.AbstractRenderer
addAllProperties, addChild, alignChildHorizontally, allowLastYLineRecursiveExtraction, applyAbsolutePosition, applyAction, applyBorderBox, applyBorderBox, applyDestination, applyDestinationsAndAnnotation, applyLinkAnnotation, applyMargins, applyMargins, applyPaddings, applyPaddings, applyRelativePositioningTranslation, beginElementOpacityApplying, beginTransformationIfApplied, calculateAbsolutePdfBBox, calculateBBox, calculateShiftToPositionBBoxOfPointsAt, clipBackgroundArea, clipBackgroundArea, clipBorderArea, createXObject, deleteOwnProperty, deleteProperty, drawBackground, drawBorder, drawChildren, endElementOpacityApplying, endTransformationIfApplied, getBorderAreaBBox, getBorderRadii, getBorders, getChildRenderers, getDefaultProperty, getInnerAreaBBox, getMargins, getMinMaxWidth, getModelElement, getOccupiedArea, getOccupiedAreaBBox, getOwnProperties, getOwnProperty, getPaddings, getParent, getProperty, getProperty, getPropertyAsBoolean, getPropertyAsColor, getPropertyAsFloat, getPropertyAsFloat, getPropertyAsFont, getPropertyAsInteger, getPropertyAsTransparentColor, getPropertyAsUnitValue, hasAbsoluteUnitValue, hasOwnOrModelProperty, hasOwnProperty, hasProperty, hasRelativeUnitValue, initElementAreas, isAbsolutePosition, isBorderBoxSizing, isFirstOnRootArea, isFixedLayout, isFlushed, isKeepTogether, isNotFittingHeight, isNotFittingLayoutArea, isNotFittingWidth, isOverflowFit, isOverflowProperty, isOverflowProperty, isOverflowProperty, isPositioned, isRelativePosition, isStaticLayout, move, rectangleToPointsList, retrieveHeight, retrieveMaxHeight, retrieveMaxWidth, retrieveMinHeight, retrieveMinWidth, retrieveResolvedDeclaredHeight, retrieveUnitValue, retrieveUnitValue, retrieveWidth, setBorders, setMinMaxWidthBasedOnFixedWidth, setParent, setProperty, transformPoints, updateHeight, updateHeightsOnSplit, updateMaxHeight, updateMinHeight, updateWidthMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.itextpdf.layout.IPropertyContainer
deleteOwnProperty, getDefaultProperty, getOwnProperty, getProperty, hasOwnProperty, hasProperty, setPropertyMethods inherited from interface com.itextpdf.layout.renderer.IRenderer
addChild, getChildRenderers, getModelElement, getOccupiedArea, getParent, getProperty, isFlushed, move, setParent
-
Field Details
-
TEXT_SPACE_COEFF
protected static final float TEXT_SPACE_COEFF- See Also:
-
yLineOffset
protected float yLineOffset -
text
-
line
-
strToBeConverted
-
otfFeaturesApplied
protected boolean otfFeaturesApplied -
tabAnchorCharacterPosition
protected float tabAnchorCharacterPosition -
reversedRanges
-
savedWordBreakAtLineEnding
-
-
Constructor Details
-
TextRenderer
Creates a TextRenderer from its corresponding layout object.- Parameters:
-
textElement- theTextwhich this object should manage
-
TextRenderer
Creates a TextRenderer from its corresponding layout object, with a custom text to replace the contents of theText.- Parameters:
-
textElement- theTextwhich this object should manage -
text- the replacement text
-
TextRenderer
-
-
Method Details
-
layout
Description copied from interface:IRendererThis method simulates positioning of the renderer, including all of its children, and returns theLayoutResult, representing the layout result, including occupied area, status, i.e. if there was enough place to fit the renderer subtree, etc.LayoutResultcan be extended to return custom layout results for custom elements, e.g.TextRendererusesTextLayoutResultas its result. This method can be called standalone to learn how much area the renderer subtree needs, or can be called beforeIRenderer.draw(DrawContext), to prepare the renderer to be flushed to the output stream. -
applyOtf
public void applyOtf() -
draw
Description copied from class:AbstractRendererFlushes the renderer subtree contents, i.e. draws itself on canvas, adds necessary objects to thePdfDocumentetc.- Specified by:
-
drawin interfaceIRenderer - Overrides:
-
drawin classAbstractRenderer - Parameters:
-
drawContext- contains thePdfDocumentto which the renderer subtree if flushed, thePdfCanvason which the renderer subtree is drawn and other additional parameters needed to perform drawing
-
trimFirst
public void trimFirst()Trims any whitespace characters from the start of theGlyphLineto be rendered. -
getAscent
public float getAscent()Gets the maximum offset above the base line that this Text extends to.- Specified by:
-
getAscentin interfaceILeafElementRenderer - Returns:
-
the upwards vertical offset of this
Text
-
getDescent
public float getDescent()Gets the maximum offset below the base line that this Text extends to.- Specified by:
-
getDescentin interfaceILeafElementRenderer - Returns:
-
the downwards vertical offset of this
Text
-
getYLine
public float getYLine()Gets the position on the canvas of the imaginary horizontal line upon which theText's contents will be written.- Returns:
-
the y position of this text on the
DrawContext
-
moveYLineTo
public void moveYLineTo(float y) Moves the vertical position to the parameter's value.- Parameters:
-
y- the new vertical position of the Text
-
setText
Manually sets the contents of the Text's representation on the canvas, regardless of the Text's own contents.- Parameters:
-
text- the replacement text
-
setText
Manually set a GlyphLine and PdfFont for rendering.- Parameters:
-
text- theGlyphLine -
font- the font
-
getText
-
length
public int length()The length of the whole text assigned to this renderer.- Returns:
- the text length
-
toString
Description copied from class:AbstractRendererReturns a string representation of the renderer.- Overrides:
-
toStringin classAbstractRenderer - Returns:
-
a
String - See Also:
-
charAt
public int charAt(int pos) Gets char code at given position for the text belonging to this renderer.- Parameters:
-
pos- the position in range [0; length()) - Returns:
- Unicode char code
-
getTabAnchorCharacterPosition
public float getTabAnchorCharacterPosition() -
getNextRenderer
Gets a new instance of this class to be used as a next renderer, after this renderer is used, iflayout(LayoutContext)is called more than once.If
TextRendereroverflows to the next line, iText uses this method to create a renderer for the overflow part. So if one wants to extendTextRenderer, one should override this method: otherwise the default method will be used and thus the default rather than the custom renderer will be created. Another method that should be overridden in case ofTextRenderer's extension iscreateCopy(GlyphLine, PdfFont). This method is responsible for creation ofTextRenderer's copies, which represent its parts of specific font.- Specified by:
-
getNextRendererin interfaceIRenderer - Returns:
- new renderer instance
-
calculateAscenderDescender
Get ascender and descender from font metrics. If these values are obtained from typo metrics they are normalized with a scale coefficient.- Parameters:
-
font- from which metrics will be extracted - Returns:
- array in which the first element is an ascender and the second is a descender
-
calculateAscenderDescender
Get ascender and descender from font metrics. In RenderingMode.DEFAULT_LAYOUT_MODE if these values are obtained from typo metrics they are normalized with a scale coefficient.- Parameters:
-
font- from which metrics will be extracted -
mode- mode in which metrics will be obtained. Impact on the use of scale coefficient - Returns:
- array in which the first element is an ascender and the second is a descender
-
getBackgroundArea
Description copied from class:AbstractRendererEvaluate the actual background- Overrides:
-
getBackgroundAreain classAbstractRenderer - Parameters:
-
occupiedAreaWithMargins- the current occupied area with applied margins - Returns:
- the actual background area
-
getFirstYLineRecursively
Description copied from class:AbstractRendererGets the first yLine of the nested children recursively. E.g. for a list, this will be the yLine of the first item (if the first item is indeed a paragraph). NOTE: this method will no go further than the first child.- Overrides:
-
getFirstYLineRecursivelyin classAbstractRenderer - Returns:
- the first yline of the nested children, null if there is no text found
-
getLastYLineRecursively
- Overrides:
-
getLastYLineRecursivelyin classAbstractRenderer
-
lineLength
protected int lineLength()Returns the length of thelinewhich is the result of the layout call.- Returns:
- the length of the line
-
baseCharactersCount
protected int baseCharactersCount() -
getMinMaxWidth
Description copied from class:AbstractRendererCalculates min and max width values for current renderer.- Overrides:
-
getMinMaxWidthin classAbstractRenderer - Returns:
-
instance of
MinMaxWidth
-
getNumberOfSpaces
protected int getNumberOfSpaces() -
createSplitRenderer
-
createOverflowRenderer
-
split
-
drawSingleUnderline
protected void drawSingleUnderline(Underline underline, TransparentColor fontColor, PdfCanvas canvas, float fontSize, float italicAngleTan) -
calculateLineWidth
protected float calculateLineWidth() -
resolveFonts
ResolveProperty.FONTString[] value.- Parameters:
-
addTo- add all processed renderers to. - Returns:
-
true, if new
TextRendererhas been created.
-
setProcessedGlyphLineAndFont
-
createCopy
Creates a copy of thisTextRenderer, which corresponds to the passedGlyphLinewithPdfFont.While processing
TextRenderer, iText uses this method to createglyph linesof specificfonts, which represent theTextRenderer's parts. If one extendsTextRenderer, one should override this method, otherwise ifFontSelectorrelated logic is triggered, copies of thisTextRendererwill have the default behavior rather than the custom one.- Parameters:
-
gl- aGlyphLinewhich represents some of thisTextRenderer's content -
font- aPdfFontfor this part of theTextRenderer's content - Returns:
-
copy of this
TextRenderer, which correspond to the passedGlyphLinewithPdfFont
-