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
    Modifier and Type | Field and Description
    --- | ---
    `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
    Modifier and Type | Method and Description
    --- | ---
    `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

Copyright © 2023 Apache Software Foundation. All rights reserved.