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
    Description
    static final int
    PDF text rendering mode: Add text to path for clipping
    static final int
    PDF text rendering mode: Fill text
    static final int
    PDF text rendering mode: Fill text and add to path for clipping
    static final int
    PDF text rendering mode: Fill, then stroke text
    static final int
    PDF text rendering mode: Fill, then stroke text and add to path for clipping
    static final int
    PDF text rendering mode: Neither fill nor stroke text (invisible)
    static final int
    PDF text rendering mode: Stroke text
    static final int
    PDF text rendering mode: Stroke text and add to path for clipping
  • Constructor Summary

    Constructors
    Constructor
    Description
    Main constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    adjustGlyphTJ(double adjust)
    Writes a glyph adjust value to the "TJ-Buffer".
    void
    Called when a new text object should be started.
    void
    Creates a "cm" command.
    void
    Called when a text object should be ended.
    protected void
    Resets the state fields.
    boolean
    Indicates whether we are in a text object or not.
    void
    setTextRenderingMode(boolean fill, boolean stroke, boolean addToClip)
    Sets the text rendering mode.
    void
    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
    Writes PDF code.
    void
    writeTd(double x, double y)
    Writes a "Td" command with specified x and y coordinates.
    void
    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(int ch, boolean multibyte, boolean cid)
    Writes a "Tj" command with specified character code.
    void
    Writes a "TJ" command, writing out the accumulated buffer with the characters and glyph positioning values.
    void
    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 Details

    • TR_FILL

      public static final int TR_FILL
      PDF text rendering mode: Fill text
      See Also:
    • TR_STROKE

      public static final int TR_STROKE
      PDF text rendering mode: Stroke text
      See Also:
    • TR_FILL_STROKE

      public static final int TR_FILL_STROKE
      PDF text rendering mode: Fill, then stroke text
      See Also:
    • TR_INVISIBLE

      public static final int TR_INVISIBLE
      PDF text rendering mode: Neither fill nor stroke text (invisible)
      See Also:
    • TR_FILL_CLIP

      public static final int TR_FILL_CLIP
      PDF text rendering mode: Fill text and add to path for clipping
      See Also:
    • TR_STROKE_CLIP

      public static final int TR_STROKE_CLIP
      PDF text rendering mode: Stroke text and add to path for clipping
      See Also:
    • 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:
    • TR_CLIP

      public static final int TR_CLIP
      PDF text rendering mode: Add text to path for clipping
      See Also:
  • Constructor Details

    • PDFTextUtil

      public PDFTextUtil()
      Main constructor.
  • Method Details

    • 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