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 Details

    • DEC

      private static final int DEC
      The number of decimal places.
      See Also:
    • 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:
    • inTextObject

      private boolean inTextObject
    • startText

      private String startText
    • endText

      private String endText
    • useMultiByte

      private boolean useMultiByte
    • useCid

      private boolean useCid
    • bufTJ

      private StringBuffer bufTJ
    • textRenderingMode

      private int textRenderingMode
    • currentFontName

      private String currentFontName
    • currentFontSize

      private double currentFontSize
  • 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
    • writeAffineTransform

      private void writeAffineTransform(AffineTransform at, StringBuffer sb)
    • writeChar

      private static void writeChar(int codePoint, StringBuffer sb, boolean multibyte, boolean cid)
    • writeChar

      private void writeChar(int codePoint, StringBuffer sb)
    • checkInTextObject

      private void checkInTextObject()
    • 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.
    • isInString

      private boolean isInString()
    • 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