Package org.apache.fop.pdf
Class PDFTextUtil
java.lang.Object
org.apache.fop.pdf.PDFTextUtil
- Direct Known Subclasses:
PDFTextUtil
Utility class for generating PDF text objects. It needs to be subclassed to add writing
functionality (see
write(String)
).-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate StringBuffer
private String
private double
private static final int
The number of decimal places.private String
private boolean
private String
private int
static final int
PDF text rendering mode: Add text to path for clippingstatic final int
PDF text rendering mode: Fill textstatic final int
PDF text rendering mode: Fill text and add to path for clippingstatic final int
PDF text rendering mode: Fill, then stroke textstatic final int
PDF text rendering mode: Fill, then stroke text and add to path for clippingstatic final int
PDF text rendering mode: Neither fill nor stroke text (invisible)static final int
PDF text rendering mode: Stroke textstatic final int
PDF text rendering mode: Stroke text and add to path for clippingprivate boolean
private boolean
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
adjustGlyphTJ
(double adjust) Writes a glyph adjust value to the "TJ-Buffer".void
Called when a new text object should be started.private void
void
Creates a "cm" command.void
Called when a text object should be ended.protected void
Resets the state fields.private boolean
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
setTextRenderingMode
(int mode) Sets the text rendering mode.void
Updates the current font.protected abstract void
Writes PDF code.protected abstract void
write
(StringBuffer code) Writes PDF code.private void
private void
writeChar
(int codePoint, StringBuffer sb) private static void
writeChar
(int codePoint, StringBuffer sb, boolean multibyte, boolean cid) 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
Writes a "Tf" command, setting a new current font.void
writeTj
(char ch, boolean multibyte, boolean cid) Writes a "Tj" command with specified character code.void
writeTJ()
Writes a "TJ" command, writing out the accumulated buffer with the characters and glyph positioning values.void
writeTJMappedChar
(char ch) Writes a char to the "TJ-Buffer".void
writeTJMappedCodePoint
(int codePoint) Writes a codepoint to the "TJ-Buffer".
-
Field Details
-
DEC
private static final int DECThe number of decimal places.- See Also:
-
TR_FILL
public static final int TR_FILLPDF text rendering mode: Fill text- See Also:
-
TR_STROKE
public static final int TR_STROKEPDF text rendering mode: Stroke text- See Also:
-
TR_FILL_STROKE
public static final int TR_FILL_STROKEPDF text rendering mode: Fill, then stroke text- See Also:
-
TR_INVISIBLE
public static final int TR_INVISIBLEPDF text rendering mode: Neither fill nor stroke text (invisible)- See Also:
-
TR_FILL_CLIP
public static final int TR_FILL_CLIPPDF text rendering mode: Fill text and add to path for clipping- See Also:
-
TR_STROKE_CLIP
public static final int TR_STROKE_CLIPPDF text rendering mode: Stroke text and add to path for clipping- See Also:
-
TR_FILL_STROKE_CLIP
public static final int TR_FILL_STROKE_CLIPPDF text rendering mode: Fill, then stroke text and add to path for clipping- See Also:
-
TR_CLIP
public static final int TR_CLIPPDF text rendering mode: Add text to path for clipping- See Also:
-
inTextObject
private boolean inTextObject -
startText
-
endText
-
useMultiByte
private boolean useMultiByte -
useCid
private boolean useCid -
bufTJ
-
textRenderingMode
private int textRenderingMode -
currentFontName
-
currentFontSize
private double currentFontSize
-
-
Constructor Details
-
PDFTextUtil
public PDFTextUtil()Main constructor.
-
-
Method Details
-
write
Writes PDF code.- Parameters:
code
- the PDF code to write
-
write
Writes PDF code.- Parameters:
code
- the PDF code to write
-
writeAffineTransform
-
writeChar
-
writeChar
-
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
Creates a "cm" command.- Parameters:
at
- the transformation matrix
-
writeTf
Writes a "Tf" command, setting a new current font.- Parameters:
fontName
- the name of the font to selectfontSize
- the font size (in points)
-
updateTf
Updates the current font. This method only writes a "Tf" if the current font changes.- Parameters:
fontName
- the name of the font to selectfontSize
- 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 filledstroke
- true if the text should be strokedaddToClip
- true if the path should be added for clipping
-
writeTextMatrix
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:
- 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
- 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
- coordinatey
- coordinate
-
writeTj
public void writeTj(char ch, boolean multibyte, boolean cid) Writes a "Tj" command with specified character code.- Parameters:
ch
- character code to write
-