org.apache.fop.pdf

## Class PDFTextUtil

- java.lang.Object
- - org.apache.fop.pdf.PDFTextUtil

Direct Known Subclasses:
  PDFTextUtil

    public abstract class PDFTextUtil
    extends Object

Utility class for generating PDF text objects. It needs to be subclassed to add writing functionality (see `write(String)`).

### Field Summary

Fields
`static int` `TR_CLIP` PDF text rendering mode: Add text to path for clipping
`static int` `TR_FILL` PDF text rendering mode: Fill text
`static int` `TR_FILL_CLIP` PDF text rendering mode: Fill text and add to path for clipping
`static int` `TR_FILL_STROKE` PDF text rendering mode: Fill, then stroke text
`static int` `TR_FILL_STROKE_CLIP` PDF text rendering mode: Fill, then stroke text and add to path for clipping
`static int` `TR_INVISIBLE` PDF text rendering mode: Neither fill nor stroke text (invisible)
`static int` `TR_STROKE` PDF text rendering mode: Stroke text
`static int` `TR_STROKE_CLIP` PDF text rendering mode: Stroke text and add to path for clipping

### Constructor Summary

Constructors
Constructor and Description
`PDFTextUtil()` Main constructor.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `adjustGlyphTJ(double adjust)` Writes a glyph adjust value to the "TJ-Buffer".
`void` `beginTextObject()` Called when a new text object should be started.
`void` `concatMatrix(AffineTransform at)` Creates a "cm" command.
`void` `endTextObject()` Called when a text object should be ended.
`protected void` `initValues()` Resets the state fields.
`boolean` `isInTextObject()` Indicates whether we are in a text object or not.
`void` `setTextRenderingMode(boolean fill, boolean stroke, boolean addToClip)` Sets the text rendering mode.
`void` `setTextRenderingMode(int mode)` Sets the text rendering mode.
`void` `updateTf(String fontName, double fontSize, boolean multiByte, boolean cid)` Updates the current font.
`protected abstract void` `write(String code)` Writes PDF code.
`protected abstract void` `write(StringBuffer code)` Writes PDF code.
`void` `writeTd(double x, double y)` Writes a "Td" command with specified x and y coordinates.
`void` `writeTextMatrix(AffineTransform localTransform)` Writes a "Tm" command, setting a new text transformation matrix.
`void` `writeTf(String fontName, double fontSize)` Writes a "Tf" command, setting a new current font.
`void` `writeTJ()` Writes a "TJ" command, writing out the accumulated buffer with the characters and glyph positioning values.
`void` `writeTj(int ch, boolean multibyte, boolean cid)` Writes a "Tj" command with specified character code.
`void` `writeTJMappedChar(char ch)` Writes a char to the "TJ-Buffer".
`void` `writeTJMappedCodePoint(int codePoint)` Writes a codepoint to the "TJ-Buffer".

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

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

### Field Detail

#### TR_FILL

    public static final int TR_FILL

PDF text rendering mode: Fill text

See Also:
  Constant Field Values

#### TR_STROKE

    public static final int TR_STROKE

PDF text rendering mode: Stroke text

See Also:
  Constant Field Values

#### TR_FILL_STROKE

    public static final int TR_FILL_STROKE

PDF text rendering mode: Fill, then stroke text

See Also:
  Constant Field Values

#### TR_INVISIBLE

    public static final int TR_INVISIBLE

PDF text rendering mode: Neither fill nor stroke text (invisible)

See Also:
  Constant Field Values

#### TR_FILL_CLIP

    public static final int TR_FILL_CLIP

PDF text rendering mode: Fill text and add to path for clipping

See Also:
  Constant Field Values

#### TR_STROKE_CLIP

    public static final int TR_STROKE_CLIP

PDF text rendering mode: Stroke text and add to path for clipping

See Also:
  Constant Field Values

#### TR_FILL_STROKE_CLIP

    public static final int TR_FILL_STROKE_CLIP

PDF text rendering mode: Fill, then stroke text and add to path for clipping

See Also:
  Constant Field Values

#### TR_CLIP

    public static final int TR_CLIP

PDF text rendering mode: Add text to path for clipping

See Also:
  Constant Field Values

### Constructor Detail

#### PDFTextUtil

    public PDFTextUtil()

Main constructor.

### Method Detail

#### write

    protected abstract void write(String code)

Writes PDF code.

Parameters:
  `code` - the PDF code to write

#### write

    protected abstract void write(StringBuffer code)

Writes PDF code.

Parameters:
  `code` - the PDF code to write

#### isInTextObject

    public boolean isInTextObject()

Indicates whether we are in a text object or not.

Returns:
  true if we are in a text object

#### beginTextObject

    public void beginTextObject()

Called when a new text object should be started. Be sure to call setFont() before issuing any text painting commands.

#### endTextObject

    public void endTextObject()

Called when a text object should be ended.

#### initValues

    protected void initValues()

Resets the state fields.

#### concatMatrix

    public void concatMatrix(AffineTransform at)

Creates a "cm" command.

Parameters:
  `at` - the transformation matrix

#### writeTf

    public void writeTf(String fontName,
                        double fontSize)

Writes a "Tf" command, setting a new current font.

Parameters:
  `fontName` - the name of the font to select
  `fontSize` - the font size (in points)

#### updateTf

    public void updateTf(String fontName,
                         double fontSize,
                         boolean multiByte,
                         boolean cid)

Updates the current font. This method only writes a "Tf" if the current font changes.

Parameters:
  `fontName` - the name of the font to select
  `fontSize` - the font size (in points)
  `multiByte` - true indicates the font is a multi-byte font, false means single-byte

#### setTextRenderingMode

    public void setTextRenderingMode(int mode)

Sets the text rendering mode.

Parameters:
  `mode` - the rendering mode (value 0 to 7, see PDF Spec, constants: TR_*)

#### setTextRenderingMode

    public void setTextRenderingMode(boolean fill,
                                     boolean stroke,
                                     boolean addToClip)

Sets the text rendering mode.

Parameters:
  `fill` - true if the text should be filled
  `stroke` - true if the text should be stroked
  `addToClip` - true if the path should be added for clipping

#### writeTextMatrix

    public void writeTextMatrix(AffineTransform localTransform)

Writes a "Tm" command, setting a new text transformation matrix.

Parameters:
  `localTransform` - the new text transformation matrix

#### writeTJMappedChar

    public void writeTJMappedChar(char ch)

Writes a char to the "TJ-Buffer".

Parameters:
  `ch` - the mapped character (code point/character code)

#### writeTJMappedCodePoint

    public void writeTJMappedCodePoint(int codePoint)

Writes a codepoint to the "TJ-Buffer".

Parameters:
  `codePoint` - the mapped character (code point/character code)

#### adjustGlyphTJ

    public void adjustGlyphTJ(double adjust)

Writes a glyph adjust value to the "TJ-Buffer".

Assumes the following:

1. if buffer is currently empty, then this is the start of the array object that encodes the adjustment and character values, and, therfore, a LEFT SQUARE BRACKET '[' must be prepended; and
2. otherwise (the buffer is not empty), then the last element written to the buffer was a mapped character, and, therefore, a terminating '>' or ')' followed by a space must be appended to the buffer prior to appending the adjustment value.

Parameters:
  `adjust` - the glyph adjust value in thousands of text unit space.

#### writeTJ

    public void writeTJ()

Writes a "TJ" command, writing out the accumulated buffer with the characters and glyph positioning values. The buffer is reset afterwards.

#### writeTd

    public void writeTd(double x,
                        double y)

Writes a "Td" command with specified x and y coordinates.

Parameters:
  `x` - coordinate
  `y` - coordinate

#### writeTj

    public void writeTj(int ch,
                        boolean multibyte,
                        boolean cid)

Writes a "Tj" command with specified character code.

Parameters:
  `ch` - character code to write