Class PdfContentByte

java.lang.Object
com.lowagie.text.pdf.PdfContentByte
Direct Known Subclasses:
PdfCopy.StampContent, PdfTemplate, StampContent, Type3Glyph

public class PdfContentByte extends Object
PdfContentByte is an object containing the user positioned text and graphic contents of a page. It knows how to apply the proper font encoding.
  • Field Details

    • ALIGN_CENTER

      public static final int ALIGN_CENTER
      The alignment is center
      See Also:
    • ALIGN_LEFT

      public static final int ALIGN_LEFT
      The alignment is left
      See Also:
    • ALIGN_RIGHT

      public static final int ALIGN_RIGHT
      The alignment is right
      See Also:
    • LINE_CAP_BUTT

      public static final int LINE_CAP_BUTT
      A possible line cap value
      See Also:
    • LINE_CAP_ROUND

      public static final int LINE_CAP_ROUND
      A possible line cap value
      See Also:
    • LINE_CAP_PROJECTING_SQUARE

      public static final int LINE_CAP_PROJECTING_SQUARE
      A possible line cap value
      See Also:
    • LINE_JOIN_MITER

      public static final int LINE_JOIN_MITER
      A possible line join value
      See Also:
    • LINE_JOIN_ROUND

      public static final int LINE_JOIN_ROUND
      A possible line join value
      See Also:
    • LINE_JOIN_BEVEL

      public static final int LINE_JOIN_BEVEL
      A possible line join value
      See Also:
    • TEXT_RENDER_MODE_FILL

      public static final int TEXT_RENDER_MODE_FILL
      A possible text rendering value
      See Also:
    • TEXT_RENDER_MODE_STROKE

      public static final int TEXT_RENDER_MODE_STROKE
      A possible text rendering value
      See Also:
    • TEXT_RENDER_MODE_FILL_STROKE

      public static final int TEXT_RENDER_MODE_FILL_STROKE
      A possible text rendering value
      See Also:
    • TEXT_RENDER_MODE_INVISIBLE

      public static final int TEXT_RENDER_MODE_INVISIBLE
      A possible text rendering value
      See Also:
    • TEXT_RENDER_MODE_FILL_CLIP

      public static final int TEXT_RENDER_MODE_FILL_CLIP
      A possible text rendering value
      See Also:
    • TEXT_RENDER_MODE_STROKE_CLIP

      public static final int TEXT_RENDER_MODE_STROKE_CLIP
      A possible text rendering value
      See Also:
    • TEXT_RENDER_MODE_FILL_STROKE_CLIP

      public static final int TEXT_RENDER_MODE_FILL_STROKE_CLIP
      A possible text rendering value
      See Also:
    • TEXT_RENDER_MODE_CLIP

      public static final int TEXT_RENDER_MODE_CLIP
      A possible text rendering value
      See Also:
    • MIN_FONT_SIZE

      static final float MIN_FONT_SIZE
      See Also:
    • unitRect

      private static final float[] unitRect
    • abrev

      private static final Map<PdfName,String> abrev
    • content

      protected ByteBuffer content
      This is the actual content
    • writer

      protected PdfWriter writer
      This is the writer
    • pdf

      protected PdfDocument pdf
      This is the PdfDocument
    • state

      protected PdfContentByte.GraphicState state
      This is the GraphicState in use
    • stateList

      protected List<PdfContentByte.GraphicState> stateList
      The list were we save/restore the state
    • separator

      protected int separator
      The separator between commands.
    • layerDepth

      protected List<Integer> layerDepth
      The list were we save/restore the layer depth
    • mcDepth

      private int mcDepth
    • inText

      private boolean inText
    • lastFillAlpha

      private int lastFillAlpha
    • lastStrokeAlpha

      private int lastStrokeAlpha
    • layoutPositionCorrection

      private Point2D layoutPositionCorrection
  • Constructor Details

    • PdfContentByte

      public PdfContentByte(PdfWriter wr)
      Constructs a new PdfContentByte-object.
      Parameters:
      wr - the writer associated to this content
  • Method Details

    • getKernArray

      public static PdfTextArray getKernArray(String text, BaseFont font)
      Constructs a kern array for a text in a certain font
      Parameters:
      text - the text
      font - the font
      Returns:
      a PdfTextArray
    • escapeString

      static byte[] escapeString(byte[] b)
      Escapes a byte array according to the PDF conventions.
      Parameters:
      b - the byte array to escape
      Returns:
      an escaped byte array
    • escapeString

      static void escapeString(byte[] b, ByteBuffer content)
      Escapes a byte array according to the PDF conventions.
      Parameters:
      b - the byte array to escape
      content - the content
    • bezierArc

      public static List<float[]> bezierArc(float x1, float y1, float x2, float y2, float startAng, float extent)
      Generates an array of bezier curves to draw an arc.

      (x1, y1) and (x2, y2) are the corners of the enclosing rectangle. Angles, measured in degrees, start with 0 to the right (the positive X axis) and increase counter-clockwise. The arc extends from startAng to startAng+extent. I.e. startAng=0 and extent=180 yields an openside-down semi-circle.

      The resulting coordinates are of the form float[]{x1,y1,x2,y2,x3,y3, x4,y4} such that the curve goes from (x1, y1) to (x4, y4) with (x2, y2) and (x3, y3) as their respective Bezier control points.

      Note: this code was taken from ReportLab (www.reportlab.org), an excellent PDF generator for Python (BSD license: http://www.reportlab.org/devfaq.html#1.3 ).

      Parameters:
      x1 - a corner of the enclosing rectangle
      y1 - a corner of the enclosing rectangle
      x2 - a corner of the enclosing rectangle
      y2 - a corner of the enclosing rectangle
      startAng - starting angle in degrees
      extent - angle extent in degrees
      Returns:
      a list of float[] with the bezier curves
    • toString

      public String toString()
      Returns the String representation of this PdfContentByte-object.
      Overrides:
      toString in class Object
      Returns:
      a String
    • getInternalBuffer

      public ByteBuffer getInternalBuffer()
      Gets the internal buffer.
      Returns:
      the internal buffer
    • toPdf

      public byte[] toPdf(PdfWriter writer)
      Returns the PDF representation of this PdfContentByte-object.
      Parameters:
      writer - the PdfWriter
      Returns:
      a byte array with the representation
    • add

      public void add(PdfContentByte other)
      Adds the content of another PdfContent-object to this object.
      Parameters:
      other - another PdfByteContent-object
    • getXTLM

      public float getXTLM()
      Gets the x position of the text line matrix.
      Returns:
      the x position of the text line matrix
    • getYTLM

      public float getYTLM()
      Gets the y position of the text line matrix.
      Returns:
      the y position of the text line matrix
    • getLeading

      public float getLeading()
      Gets the current text leading.
      Returns:
      the current text leading
    • setLeading

      public void setLeading(float leading)
      Sets the text leading parameter.

      The leading parameter is measured in text space units. It specifies the vertical distance between the baselines of adjacent lines of text.

      Parameters:
      leading - the new leading
    • getCharacterSpacing

      public float getCharacterSpacing()
      Gets the current character spacing.
      Returns:
      the current character spacing
    • setCharacterSpacing

      public void setCharacterSpacing(float charSpace)
      Sets the character spacing parameter.
      Parameters:
      charSpace - a parameter
    • getWordSpacing

      public float getWordSpacing()
      Gets the current word spacing.
      Returns:
      the current word spacing
    • setWordSpacing

      public void setWordSpacing(float wordSpace)
      Sets the word spacing parameter.
      Parameters:
      wordSpace - a parameter
    • getHorizontalScaling

      public float getHorizontalScaling()
      Gets the current character spacing.
      Returns:
      the current character spacing
    • setHorizontalScaling

      public void setHorizontalScaling(float scale)
      Sets the horizontal scaling parameter.
      Parameters:
      scale - a parameter
    • setFlatness

      public void setFlatness(float flatness)
      Changes the Flatness.

      Flatness sets the maximum permitted distance in device pixels between the mathematically correct path and an approximation constructed from straight line segments.

      Parameters:
      flatness - a value
    • setLineCap

      public void setLineCap(int style)
      Changes the Line cap style.

      The line cap style specifies the shape to be used at the end of open subpaths when they are stroked.
      Allowed values are LINE_CAP_BUTT, LINE_CAP_ROUND and LINE_CAP_PROJECTING_SQUARE.

      Parameters:
      style - a value
    • setLineDash

      public void setLineDash(float phase)
      Changes the value of the line dash pattern.

      The line dash pattern controls the pattern of dashes and gaps used to stroke paths. It is specified by an array and a phase. The array specifies the length of the alternating dashes and gaps. The phase specifies the distance into the dash pattern to start the dash.

      Parameters:
      phase - the value of the phase
    • setLineDash

      public void setLineDash(float unitsOn, float phase)
      Changes the value of the line dash pattern.

      The line dash pattern controls the pattern of dashes and gaps used to stroke paths. It is specified by an array and a phase. The array specifies the length of the alternating dashes and gaps. The phase specifies the distance into the dash pattern to start the dash.

      Parameters:
      unitsOn - the number of units that must be 'on' (equals the number of units that must be 'off').
      phase - the value of the phase
    • setLineDash

      public void setLineDash(float unitsOn, float unitsOff, float phase)
      Changes the value of the line dash pattern.

      The line dash pattern controls the pattern of dashes and gaps used to stroke paths. It is specified by an array and a phase. The array specifies the length of the alternating dashes and gaps. The phase specifies the distance into the dash pattern to start the dash.

      Parameters:
      unitsOn - the number of units that must be 'on'
      unitsOff - the number of units that must be 'off'
      phase - the value of the phase
    • setLineDash

      public final void setLineDash(float[] array, float phase)
      Changes the value of the line dash pattern.

      The line dash pattern controls the pattern of dashes and gaps used to stroke paths. It is specified by an array and a phase. The array specifies the length of the alternating dashes and gaps. The phase specifies the distance into the dash pattern to start the dash.

      Parameters:
      array - length of the alternating dashes and gaps
      phase - the value of the phase
    • setLineJoin

      public void setLineJoin(int style)
      Changes the Line join style.

      The line join style specifies the shape to be used at the corners of paths that are stroked.
      Allowed values are LINE_JOIN_MITER (Miter joins), LINE_JOIN_ROUND (Round joins) and LINE_JOIN_BEVEL (Bevel joins).

      Parameters:
      style - a value
    • setLineWidth

      public void setLineWidth(float w)
      Changes the line width.

      The line width specifies the thickness of the line used to stroke a path and is measured in user space units.

      Parameters:
      w - a width
    • setMiterLimit

      public void setMiterLimit(float miterLimit)
      Changes the Miter limit.

      When two line segments meet at a sharp angle and mitered joins have been specified as the line join style, it is possible for the miter to extend far beyond the thickness of the line stroking path. The miter limit imposes a maximum on the ratio of the miter length to the line witdh. When the limit is exceeded, the join is converted from a miter to a bevel.

      Parameters:
      miterLimit - a miter limit
    • clip

      public void clip()
      Modify the current clipping path by intersecting it with the current path, using the nonzero winding number rule to determine which regions lie inside the clipping path.
    • eoClip

      public void eoClip()
      Modify the current clipping path by intersecting it with the current path, using the even-odd rule to determine which regions lie inside the clipping path.
    • setGrayFill

      public void setGrayFill(float gray)
      Changes the currentgray tint for filling paths (device dependent colors!).

      Sets the color space to DeviceGray (or the DefaultGray color space), and sets the gray tint to use for filling paths.

      Parameters:
      gray - a value between 0 (black) and 1 (white)
    • setGrayFill

      public void setGrayFill(float gray, float alpha)
    • resetGrayFill

      public void resetGrayFill()
      Changes the current gray tint for filling paths to black.
    • setGrayStroke

      public void setGrayStroke(float gray)
      Changes the currentgray tint for stroking paths (device dependent colors!).

      Sets the color space to DeviceGray (or the DefaultGray color space), and sets the gray tint to use for stroking paths.

      Parameters:
      gray - a value between 0 (black) and 1 (white)
    • setGrayStroke

      public void setGrayStroke(float gray, float alpha)
    • resetGrayStroke

      public void resetGrayStroke()
      Changes the current gray tint for stroking paths to black.
    • HelperRGB

      private void HelperRGB(int red, int green, int blue)
      Helper to validate and write the RGB color components
      Parameters:
      red - the intensity of red. A value between 0 and 255
      green - the intensity of green. A value between 0 and 255
      blue - the intensity of blue. A value between 0 and 255
    • HelperRGB

      private void HelperRGB(float red, float green, float blue)
      Helper to validate and write the RGB color components
      Parameters:
      red - the intensity of red. A value between 0 and 1
      green - the intensity of green. A value between 0 and 1
      blue - the intensity of blue. A value between 0 and 1
    • setRGBColorFillF

      public void setRGBColorFillF(float red, float green, float blue)
      Changes the current color for filling paths (device dependent colors!).

      Sets the color space to DeviceRGB (or the DefaultRGB color space), and sets the color to use for filling paths.

      Following the PDF manual, each operand must be a number between 0 (minimum intensity) and 1 (maximum intensity).

      Parameters:
      red - the intensity of red. A value between 0 and 1
      green - the intensity of green. A value between 0 and 1
      blue - the intensity of blue. A value between 0 and 1
    • setRGBColorFillF

      public void setRGBColorFillF(float red, float green, float blue, float alpha)
    • resetRGBColorFill

      public void resetRGBColorFill()
      Changes the current color for filling paths to black. Resetting using gray color to keep the backward compatibility.
    • setRGBColorStrokeF

      public void setRGBColorStrokeF(float red, float green, float blue)
      Changes the current color for stroking paths (device dependent colors!).

      Sets the color space to DeviceRGB (or the DefaultRGB color space), and sets the color to use for stroking paths.

      Following the PDF manual, each operand must be a number between 0 (miniumum intensity) and 1 (maximum intensity).

      Parameters:
      red - the intensity of red. A value between 0 and 1
      green - the intensity of green. A value between 0 and 1
      blue - the intensity of blue. A value between 0 and 1
    • resetRGBColorStroke

      public void resetRGBColorStroke()
      Changes the current color for stroking paths to black. Resetting using gray color to keep the backward compatibility.
    • HelperCMYK

      private void HelperCMYK(int cyan, int magenta, int yellow, int black)
      Helper to validate and write the CMYK color components.
      Parameters:
      cyan - the intensity of cyan. A value between 0 and 255
      magenta - the intensity of magenta. A value between 0 and 255
      yellow - the intensity of yellow. A value between 0 and 255
      black - the intensity of black. A value between 0 and 255
    • HelperCMYK

      private void HelperCMYK(float cyan, float magenta, float yellow, float black)
      Helper to validate and write the CMYK color components.
      Parameters:
      cyan - the intensity of cyan. A value between 0 and 1
      magenta - the intensity of magenta. A value between 0 and 1
      yellow - the intensity of yellow. A value between 0 and 1
      black - the intensity of black. A value between 0 and 1
    • setCMYKColorFillF

      public void setCMYKColorFillF(float cyan, float magenta, float yellow, float black)
      Changes the current color for filling paths (device dependent colors!).

      Sets the color space to DeviceCMYK (or the DefaultCMYK color space), and sets the color to use for filling paths.

      Following the PDF manual, each operand must be a number between 0 (no ink) and 1 (maximum ink).

      Parameters:
      cyan - the intensity of cyan. A value between 0 and 1
      magenta - the intensity of magenta. A value between 0 and 1
      yellow - the intensity of yellow. A value between 0 and 1
      black - the intensity of black. A value between 0 and 1
    • setCMYKColorFillF

      public void setCMYKColorFillF(float cyan, float magenta, float yellow, float black, float alpha)
    • resetCMYKColorFill

      public void resetCMYKColorFill()
      Changes the current color for filling paths to black.
    • setCMYKColorStrokeF

      public void setCMYKColorStrokeF(float cyan, float magenta, float yellow, float black)
      Changes the current color for stroking paths (device dependent colors!).

      Sets the color space to DeviceCMYK (or the DefaultCMYK color space), and sets the color to use for stroking paths.

      Following the PDF manual, each operand must be a number between 0 (miniumum intensity) and 1 (maximum intensity).

      Parameters:
      cyan - the intensity of cyan. A value between 0 and 1
      magenta - the intensity of magenta. A value between 0 and 1
      yellow - the intensity of yellow. A value between 0 and 1
      black - the intensity of black. A value between 0 and 1
    • setCMYKColorStrokeF

      public void setCMYKColorStrokeF(float cyan, float magenta, float yellow, float black, float alpha)
    • resetCMYKColorStroke

      public void resetCMYKColorStroke()
      Changes the current color for stroking paths to black.
    • moveTo

      public void moveTo(float x, float y)
      Move the current point (x, y), omitting any connecting line segment.
      Parameters:
      x - new x-coordinate
      y - new y-coordinate
    • lineTo

      public void lineTo(float x, float y)
      Appends a straight line segment from the current point (x, y). The new current point is (x, y).
      Parameters:
      x - new x-coordinate
      y - new y-coordinate
    • curveTo

      public void curveTo(float x1, float y1, float x2, float y2, float x3, float y3)
      Appends a Bêzier curve to the path, starting from the current point.
      Parameters:
      x1 - x-coordinate of the first control point
      y1 - y-coordinate of the first control point
      x2 - x-coordinate of the second control point
      y2 - y-coordinate of the second control point
      x3 - x-coordinate of the ending point (= new current point)
      y3 - y-coordinate of the ending point (= new current point)
    • curveTo

      public void curveTo(float x2, float y2, float x3, float y3)
      Appends a Bêzier curve to the path, starting from the current point.
      Parameters:
      x2 - x-coordinate of the second control point
      y2 - y-coordinate of the second control point
      x3 - x-coordinate of the ending point (= new current point)
      y3 - y-coordinate of the ending point (= new current point)
    • curveFromTo

      public void curveFromTo(float x1, float y1, float x3, float y3)
      Appends a Bêzier curve to the path, starting from the current point.
      Parameters:
      x1 - x-coordinate of the first control point
      y1 - y-coordinate of the first control point
      x3 - x-coordinate of the ending point (= new current point)
      y3 - y-coordinate of the ending point (= new current point)
    • circle

      public void circle(float x, float y, float r)
      Draws a circle. The endpoint will (x+r, y).
      Parameters:
      x - x center of circle
      y - y center of circle
      r - radius of circle
    • rectangle

      public void rectangle(float x, float y, float w, float h)
      Adds a rectangle to the current path.
      Parameters:
      x - x-coordinate of the starting point
      y - y-coordinate of the starting point
      w - width
      h - height
    • compareColors

      private boolean compareColors(Color c1, Color c2)
    • variableRectangle

      public void variableRectangle(Rectangle rect)
      Adds a variable width border to the current path. Only use if Rectangle.isUseVariableBorders = true.
      Parameters:
      rect - a Rectangle
    • rectangle

      public void rectangle(Rectangle rectangle)
      Adds a border (complete or partially) to the current path..
      Parameters:
      rectangle - a Rectangle
    • closePath

      public void closePath()
      Closes the current subpath by appending a straight line segment from the current point to the starting point of the subpath.
    • newPath

      public void newPath()
      Ends the path without filling or stroking it.
    • stroke

      public void stroke()
      Strokes the path.
    • closePathStroke

      public void closePathStroke()
      Closes the path and strokes it.
    • fill

      public void fill()
      Fills the path, using the non-zero winding number rule to determine the region to fill.
    • eoFill

      public void eoFill()
      Fills the path, using the even-odd rule to determine the region to fill.
    • fillStroke

      public void fillStroke()
      Fills the path using the non-zero winding number rule to determine the region to fill and strokes it.
    • closePathFillStroke

      public void closePathFillStroke()
      Closes the path, fills it using the non-zero winding number rule to determine the region to fill and strokes it.
    • eoFillStroke

      public void eoFillStroke()
      Fills the path, using the even-odd rule to determine the region to fill and strokes it.
    • closePathEoFillStroke

      public void closePathEoFillStroke()
      Closes the path, fills it using the even-odd rule to determine the region to fill and strokes it.
    • addImage

      public void addImage(Image image) throws DocumentException
      Adds an Image to the page. The Image must have absolute positioning.
      Parameters:
      image - the Image object
      Throws:
      DocumentException - if the Image does not have absolute positioning
    • addImage

      public void addImage(Image image, boolean inlineImage) throws DocumentException
      Adds an Image to the page. The Image must have absolute positioning. The image can be placed inline.
      Parameters:
      image - the Image object
      inlineImage - true to place this image inline, false otherwise
      Throws:
      DocumentException - if the Image does not have absolute positioning
    • addImage

      public void addImage(Image image, float a, float b, float c, float d, float e, float f) throws DocumentException
      Adds an Image to the page. The positioning of the Image is done with the transformation matrix. To position an image at (x,y) use addImage(image, image_width, 0, 0, image_height, x, y).
      Parameters:
      image - the Image object
      a - an element of the transformation matrix
      b - an element of the transformation matrix
      c - an element of the transformation matrix
      d - an element of the transformation matrix
      e - an element of the transformation matrix
      f - an element of the transformation matrix
      Throws:
      DocumentException - on error
    • addImage

      public void addImage(Image image, float a, float b, float c, float d, float e, float f, boolean inlineImage) throws DocumentException
      Adds an Image to the page. The positioning of the Image is done with the transformation matrix. To position an image at (x,y) use addImage(image, image_width, 0, 0, image_height, x, y). The image can be placed inline.
      Parameters:
      image - the Image object
      a - an element of the transformation matrix
      b - an element of the transformation matrix
      c - an element of the transformation matrix
      d - an element of the transformation matrix
      e - an element of the transformation matrix
      f - an element of the transformation matrix
      inlineImage - true to place this image inline, false otherwise
      Throws:
      DocumentException - on error
    • reset

      public void reset()
      Makes this PdfContentByte empty. Calls reset( true )
    • reset

      public void reset(boolean validateContent)
      Makes this PdfContentByte empty.
      Parameters:
      validateContent - will call sanityCheck() if true.
      Since:
      2.1.6
    • beginText

      public void beginText()
      Starts the writing of text.
    • endText

      public void endText()
      Ends the writing of text and makes the current font invalid.
    • saveState

      public void saveState()
      Saves the graphic state. saveState and restoreState must be balanced.
    • restoreState

      public void restoreState()
      Restores the graphic state. saveState and restoreState must be balanced.
    • setFontAndSize

      public void setFontAndSize(BaseFont bf, float size)
      Set the font and the size for the subsequent text writing.
      Parameters:
      bf - the font
      size - the font size in points
    • setTextRenderingMode

      public void setTextRenderingMode(int rendering)
      Sets the text rendering parameter.
      Parameters:
      rendering - a parameter
    • setTextRise

      public void setTextRise(float rise)
      Sets the text rise parameter.

      This allows to write text in subscript or superscript mode.

      Parameters:
      rise - a parameter
    • showText2

      private void showText2(String text)
      A helper to insert into the content stream the text converted to bytes according to the font's encoding.
      Parameters:
      text - the text to write
    • showText

      public void showText(String text)
      Shows the text. If applicable, the LayoutProcessor is used
      Parameters:
      text - the text to write
    • showTextBasic

      public void showTextBasic(String text)
      Shows the text. LayoutProcessor is not used.
      Parameters:
      text - the text to write
    • showText

      public void showText(GlyphVector glyphVector)
      Shows the glyphs in glyphVector. Layout info in glyphVector is ignored
      Parameters:
      glyphVector - containing the glyphs to write
    • showText

      public void showText(GlyphVector glyphVector, int beginIndex, int endIndex)
      Shows the glyphVector. Layout info in glyphVector is ignored
      Parameters:
      glyphVector - containing the glyphs to write
      beginIndex - index of first glyph
      endIndex - index of last glyph+1
    • showTextKerned

      public void showTextKerned(String text)
      Shows the text kerned.
      Parameters:
      text - the text to write
    • newlineShowText

      public void newlineShowText(String text)
      Moves to the next line and shows text.
      Parameters:
      text - the text to write
    • newlineShowText

      public void newlineShowText(float wordSpacing, float charSpacing, String text)
      Moves to the next line and shows text string, using the given values of the character and word spacing parameters.
      Parameters:
      wordSpacing - a parameter
      charSpacing - a parameter
      text - the text to write
    • setTextMatrix

      public void setTextMatrix(float a, float b, float c, float d, float x, float y)
      Changes the text matrix.

      Remark: this operation also initializes the current point position.

      Parameters:
      a - operand 1,1 in the matrix
      b - operand 1,2 in the matrix
      c - operand 2,1 in the matrix
      d - operand 2,2 in the matrix
      x - operand 3,1 in the matrix
      y - operand 3,2 in the matrix
    • setTextMatrix

      public void setTextMatrix(float x, float y)
      Changes the text matrix. The first four parameters are {1,0,0,1}.

      Remark: this operation also initializes the current point position.

      Parameters:
      x - operand 3,1 in the matrix
      y - operand 3,2 in the matrix
    • moveText

      public void moveText(float x, float y)
      Moves to the start of the next line, offset from the start of the current line.
      Parameters:
      x - x-coordinate of the new current point
      y - y-coordinate of the new current point
    • moveTextBasic

      void moveTextBasic(float x, float y)
      Moves to the start of the next line, offset from the start of the current line.
      Parameters:
      x - x-coordinate of the new current point
      y - y-coordinate of the new current point
    • moveTextWithLeading

      public void moveTextWithLeading(float x, float y)
      Moves to the start of the next line, offset from the start of the current line.

      As a side effect, this sets the leading parameter in the text state.

      Parameters:
      x - offset of the new current point
      y - y-coordinate of the new current point
    • newlineText

      public void newlineText()
      Moves to the start of the next line.
    • size

      int size()
      Gets the size of this content.
      Returns:
      the size of the content
    • addOutline

      public void addOutline(PdfOutline outline, String name)
      Adds a named outline to the document.
      Parameters:
      outline - the outline
      name - the name for the local destination
    • getRootOutline

      public PdfOutline getRootOutline()
      Gets the root outline.
      Returns:
      the root outline
    • getEffectiveStringWidth

      public float getEffectiveStringWidth(String text, boolean kerned)
      Computes the width of the given string taking in account the current values of "Character spacing", "Word Spacing" and "Horizontal Scaling". The additional spacing is not computed for the last character of the string.
      Parameters:
      text - the string to get width of
      kerned - the kerning option
      Returns:
      the width
    • showTextAligned

      public void showTextAligned(int alignment, String text, float x, float y, float rotation)
      Shows text right, left or center aligned with rotation.
      Parameters:
      alignment - the alignment can be ALIGN_CENTER, ALIGN_RIGHT or ALIGN_LEFT
      text - the text to show
      x - the x pivot position
      y - the y pivot position
      rotation - the rotation to be applied in degrees counterclockwise
    • showTextAligned

      private void showTextAligned(int alignment, String text, float x, float y, float rotation, boolean kerned)
    • showTextAlignedKerned

      public void showTextAlignedKerned(int alignment, String text, float x, float y, float rotation)
      Shows text kerned right, left or center aligned with rotation.
      Parameters:
      alignment - the alignment can be ALIGN_CENTER, ALIGN_RIGHT or ALIGN_LEFT
      text - the text to show
      x - the x pivot position
      y - the y pivot position
      rotation - the rotation to be applied in degrees counterclockwise
    • concatCTM

      public void concatCTM(float a, float b, float c, float d, float e, float f)
      Concatenate a matrix to the current transformation matrix.
      Parameters:
      a - an element of the transformation matrix
      b - an element of the transformation matrix
      c - an element of the transformation matrix
      d - an element of the transformation matrix
      e - an element of the transformation matrix
      f - an element of the transformation matrix
    • arc

      public void arc(float x1, float y1, float x2, float y2, float startAng, float extent)
      Draws a partial ellipse inscribed within the rectangle x1,y1,x2,y2, starting at startAng degrees and covering extent degrees. Angles start with 0 to the right (+x) and increase counter-clockwise.
      Parameters:
      x1 - a corner of the enclosing rectangle
      y1 - a corner of the enclosing rectangle
      x2 - a corner of the enclosing rectangle
      y2 - a corner of the enclosing rectangle
      startAng - starting angle in degrees
      extent - angle extent in degrees
    • ellipse

      public void ellipse(float x1, float y1, float x2, float y2)
      Draws an ellipse inscribed within the rectangle x1,y1,x2,y2.
      Parameters:
      x1 - a corner of the enclosing rectangle
      y1 - a corner of the enclosing rectangle
      x2 - a corner of the enclosing rectangle
      y2 - a corner of the enclosing rectangle
    • createPattern

      public PdfPatternPainter createPattern(float width, float height, float xstep, float ystep)
      Create a new colored tiling pattern.
      Parameters:
      width - the width of the pattern
      height - the height of the pattern
      xstep - the desired horizontal spacing between pattern cells. May be either positive or negative, but not zero.
      ystep - the desired vertical spacing between pattern cells. May be either positive or negative, but not zero.
      Returns:
      the PdfPatternPainter where the pattern will be created
    • createPattern

      public PdfPatternPainter createPattern(float width, float height)
      Create a new colored tiling pattern. Variables xstep and ystep are set to the same values of width and height.
      Parameters:
      width - the width of the pattern
      height - the height of the pattern
      Returns:
      the PdfPatternPainter where the pattern will be created
    • createPattern

      public PdfPatternPainter createPattern(float width, float height, float xstep, float ystep, Color color)
      Create a new uncolored tiling pattern.
      Parameters:
      width - the width of the pattern
      height - the height of the pattern
      xstep - the desired horizontal spacing between pattern cells. May be either positive or negative, but not zero.
      ystep - the desired vertical spacing between pattern cells. May be either positive or negative, but not zero.
      color - the default color. Can be null
      Returns:
      the PdfPatternPainter where the pattern will be created
    • createPattern

      public PdfPatternPainter createPattern(float width, float height, Color color)
      Create a new uncolored tiling pattern. Variables xstep and ystep are set to the same values of width and height.
      Parameters:
      width - the width of the pattern
      height - the height of the pattern
      color - the default color. Can be null
      Returns:
      the PdfPatternPainter where the pattern will be created
    • createTemplate

      public PdfTemplate createTemplate(float width, float height)
      Creates a new template.

      Creates a new template that is nothing more than a form XObject. This template can be included in this PdfContentByte or in another template. Templates are only written to the output when the document is closed permitting things like showing text in the first page that is only defined in the last page.

      Parameters:
      width - the bounding box width
      height - the bounding box height
      Returns:
      the created template
    • createTemplate

      PdfTemplate createTemplate(float width, float height, PdfName forcedName)
    • createAppearance

      public PdfAppearance createAppearance(float width, float height)
      Creates a new appearance to be used with form fields.
      Parameters:
      width - the bounding box width
      height - the bounding box height
      Returns:
      the appearance created
    • createAppearance

      PdfAppearance createAppearance(float width, float height, PdfName forcedName)
    • addPSXObject

      public void addPSXObject(PdfPSXObject psobject)
      Adds a PostScript XObject to this content.
      Parameters:
      psobject - the object
    • addTemplate

      public void addTemplate(PdfTemplate template, float a, float b, float c, float d, float e, float f)
      Adds a template to this content.
      Parameters:
      template - the template
      a - an element of the transformation matrix
      b - an element of the transformation matrix
      c - an element of the transformation matrix
      d - an element of the transformation matrix
      e - an element of the transformation matrix
      f - an element of the transformation matrix
    • addTemplateReference

      void addTemplateReference(PdfIndirectReference template, PdfName name, float a, float b, float c, float d, float e, float f)
    • addTemplate

      public void addTemplate(PdfTemplate template, float x, float y)
      Adds a template to this content.
      Parameters:
      template - the template
      x - the x location of this template
      y - the y location of this template
    • addTemplate

      public void addTemplate(PdfTemplate template, double a, double b, double c, double d, double e, double f)
      Adds a template to this content using double matrices.
      Parameters:
      template - the template
      a - an element of the transformation matrix
      b - an element of the transformation matrix
      c - an element of the transformation matrix
      d - an element of the transformation matrix
      e - an element of the transformation matrix
      f - an element of the transformation matrix
    • setCMYKColorFill

      public void setCMYKColorFill(int cyan, int magenta, int yellow, int black)
      Changes the current color for filling paths (device dependent colors!).

      Sets the color space to DeviceCMYK (or the DefaultCMYK color space), and sets the color to use for filling paths.

      This method is described in the 'Portable Document Format Reference Manual version 1.3' section 8.5.2.1 (page 331).

      Following the PDF manual, each operand must be a number between 0 (no ink) and 1 (maximum ink). This method however accepts only integers between 0x00 and 0xFF.

      Parameters:
      cyan - the intensity of cyan
      magenta - the intensity of magenta
      yellow - the intensity of yellow
      black - the intensity of black
    • setCMYKColorStroke

      public void setCMYKColorStroke(int cyan, int magenta, int yellow, int black)
      Changes the current color for stroking paths (device dependent colors!).

      Sets the color space to DeviceCMYK (or the DefaultCMYK color space), and sets the color to use for stroking paths.

      This method is described in the 'Portable Document Format Reference Manual version 1.3' section 8.5.2.1 (page 331).

      Following the PDF manual, each operand must be a number between 0 (minimum intensity) and 1 (maximum intensity). This method however accepts only integers between 0x00 and 0xFF.
      Parameters:
      cyan - the intensity of red
      magenta - the intensity of green
      yellow - the intensity of blue
      black - the intensity of black
    • setRGBColorFill

      public void setRGBColorFill(int red, int green, int blue)
      Changes the current color for filling paths (device dependent colors!).

      Sets the color space to DeviceRGB (or the DefaultRGB color space), and sets the color to use for filling paths.

      This method is described in the 'Portable Document Format Reference Manual version 1.3' section 8.5.2.1 (page 331).

      Following the PDF manual, each operand must be a number between 0 (minimum intensity) and 1 (maximum intensity). This method however accepts only integers between 0x00 and 0xFF.

      Parameters:
      red - the intensity of red
      green - the intensity of green
      blue - the intensity of blue
    • setRGBColorFill

      public void setRGBColorFill(int red, int green, int blue, int alpha)
    • setRGBColorStroke

      public void setRGBColorStroke(int red, int green, int blue)
      Changes the current color for stroking paths (device dependent colors!).

      Sets the color space to DeviceRGB (or the DefaultRGB color space), and sets the color to use for stroking paths.

      This method is described in the 'Portable Document Format Reference Manual version 1.3' section 8.5.2.1 (page 331).

      Following the PDF manual, each operand must be a number between 0 (minimum intensity) and 1 (maximum intensity). This method however accepts only integers between 0x00 and 0xFF.
      Parameters:
      red - the intensity of red
      green - the intensity of green
      blue - the intensity of blue
    • setRGBColorStroke

      public void setRGBColorStroke(int red, int green, int blue, int alpha)
    • setColorStroke

      public void setColorStroke(Color color)
      Sets the stroke color. color can be an ExtendedColor.
      Parameters:
      color - the color
    • saveColorStroke

      private void saveColorStroke(ExtendedColor extendedColor)
    • setColorFill

      public void setColorFill(Color color)
      Sets the fill color. color can be an ExtendedColor.
      Parameters:
      color - the color
    • saveColorFill

      private void saveColorFill(ExtendedColor extendedColor)
    • setColorFill

      public void setColorFill(PdfSpotColor sp, float tint)
      Sets the fill color to a spot color.
      Parameters:
      sp - the spot color
      tint - the tint for the spot color. 0 is no color and 1 is 100% color
    • setColorStroke

      public void setColorStroke(PdfSpotColor sp, float tint)
      Sets the stroke color to a spot color.
      Parameters:
      sp - the spot color
      tint - the tint for the spot color. 0 is no color and 1 is 100% color
    • setPatternFill

      public void setPatternFill(PdfPatternPainter p)
      Sets the fill color to a pattern. The pattern can be colored or uncolored.
      Parameters:
      p - the pattern
    • outputColorNumbers

      void outputColorNumbers(Color color, float tint)
      Outputs the color values to the content.
      Parameters:
      color - The color
      tint - the tint if it is a spot color, ignored otherwise
    • setPatternFill

      public void setPatternFill(PdfPatternPainter p, Color color)
      Sets the fill color to an uncolored pattern.
      Parameters:
      p - the pattern
      color - the color of the pattern
    • setPatternFill

      public void setPatternFill(PdfPatternPainter p, Color color, float tint)
      Sets the fill color to an uncolored pattern.
      Parameters:
      p - the pattern
      color - the color of the pattern
      tint - the tint if the color is a spot color, ignored otherwise
    • setPatternStroke

      public void setPatternStroke(PdfPatternPainter p, Color color)
      Sets the stroke color to an uncolored pattern.
      Parameters:
      p - the pattern
      color - the color of the pattern
    • setPatternStroke

      public void setPatternStroke(PdfPatternPainter p, Color color, float tint)
      Sets the stroke color to an uncolored pattern.
      Parameters:
      p - the pattern
      color - the color of the pattern
      tint - the tint if the color is a spot color, ignored otherwise
    • setPatternStroke

      public void setPatternStroke(PdfPatternPainter p)
      Sets the stroke color to a pattern. The pattern can be colored or uncolored.
      Parameters:
      p - the pattern
    • paintShading

      public void paintShading(PdfShading shading)
      Paints using a shading object.
      Parameters:
      shading - the shading object
    • paintShading

      public void paintShading(PdfShadingPattern shading)
      Paints using a shading pattern.
      Parameters:
      shading - the shading pattern
    • setShadingFill

      public void setShadingFill(PdfShadingPattern shading)
      Sets the shading fill pattern.
      Parameters:
      shading - the shading pattern
    • setShadingStroke

      public void setShadingStroke(PdfShadingPattern shading)
      Sets the shading stroke pattern
      Parameters:
      shading - the shading pattern
    • checkWriter

      protected void checkWriter()
      Check if we have a valid PdfWriter.
    • showText

      public void showText(PdfTextArray text)
      Show an array of text.
      Parameters:
      text - array of text
    • getPdfWriter

      public PdfWriter getPdfWriter()
      Gets the PdfWriter in use by this object.
      Returns:
      the PdfWriter in use by this object
    • getPdfDocument

      public PdfDocument getPdfDocument()
      Gets the PdfDocument in use by this object.
      Returns:
      the PdfDocument in use by this object
    • localGoto

      public void localGoto(String name, float llx, float lly, float urx, float ury)
      Implements a link to other part of the document. The jump will be made to a local destination with the same name, that must exist.
      Parameters:
      name - the name for this link
      llx - the lower left x corner of the activation area
      lly - the lower left y corner of the activation area
      urx - the upper right x corner of the activation area
      ury - the upper right y corner of the activation area
    • localDestination

      public boolean localDestination(String name, PdfDestination destination)
      The local destination to where a local goto with the same name will jump.
      Parameters:
      name - the name of this local destination
      destination - the PdfDestination with the jump coordinates
      Returns:
      true if the local destination was added, false if a local destination with the same name already exists
    • getDuplicate

      public PdfContentByte getDuplicate()
      Gets a duplicate of this PdfContentByte. All the members are copied by reference but the buffer stays different.
      Returns:
      a copy of this PdfContentByte
    • remoteGoto

      public void remoteGoto(String filename, String name, float llx, float lly, float urx, float ury)
      Implements a link to another document.
      Parameters:
      filename - the filename for the remote document
      name - the name to jump to
      llx - the lower left x corner of the activation area
      lly - the lower left y corner of the activation area
      urx - the upper right x corner of the activation area
      ury - the upper right y corner of the activation area
    • remoteGoto

      public void remoteGoto(String filename, int page, float llx, float lly, float urx, float ury)
      Implements a link to another document.
      Parameters:
      filename - the filename for the remote document
      page - the page to jump to
      llx - the lower left x corner of the activation area
      lly - the lower left y corner of the activation area
      urx - the upper right x corner of the activation area
      ury - the upper right y corner of the activation area
    • roundRectangle

      public void roundRectangle(float x, float y, float w, float h, float r)
      Adds a round rectangle to the current path.
      Parameters:
      x - x-coordinate of the starting point
      y - y-coordinate of the starting point
      w - width
      h - height
      r - radius of the arc corner
    • setAction

      public void setAction(PdfAction action, float llx, float lly, float urx, float ury)
      Implements an action in an area.
      Parameters:
      action - the PdfAction
      llx - the lower left x corner of the activation area
      lly - the lower left y corner of the activation area
      urx - the upper right x corner of the activation area
      ury - the upper right y corner of the activation area
    • setLiteral

      public void setLiteral(String s)
      Outputs a String directly to the content.
      Parameters:
      s - the String
    • setLiteral

      public void setLiteral(char c)
      Outputs a char directly to the content.
      Parameters:
      c - the char
    • setLiteral

      public void setLiteral(float n)
      Outputs a float directly to the content.
      Parameters:
      n - the float
    • checkNoPattern

      void checkNoPattern(PdfTemplate t)
      Throws an error if it is a pattern.
      Parameters:
      t - the object to check
    • drawRadioField

      public void drawRadioField(float llx, float lly, float urx, float ury, boolean on)
      Draws a TextField.
      Parameters:
      llx - lower-left-x
      lly - lower-left-y
      urx - upper-right-x
      ury - upper-right-y
      on - if radio is selected or not
    • drawTextField

      public void drawTextField(float llx, float lly, float urx, float ury)
      Draws a TextField.
      Parameters:
      llx - lower-left-x
      lly - lower-left-y
      urx - upper-right-x
      ury - upper-right-y
    • drawButton

      public void drawButton(float llx, float lly, float urx, float ury, String text, BaseFont bf, float size)
      Draws a button.
      Parameters:
      llx - lower-left-x
      lly - lower-left-y
      urx - upper-right-x
      ury - upper-right-y
      text - text
      bf - BaseFont
      size - size
    • createGraphicsShapes

      public Graphics2D createGraphicsShapes(float width, float height)
      Gets a Graphics2D to write on. The graphics are translated to PDF commands as shapes. No PDF fonts will appear.
      Parameters:
      width - the width of the panel
      height - the height of the panel
      Returns:
      a Graphics2D
    • createPrinterGraphicsShapes

      public Graphics2D createPrinterGraphicsShapes(float width, float height, PrinterJob printerJob)
      Gets a Graphics2D to print on. The graphics are translated to PDF commands as shapes. No PDF fonts will appear.
      Parameters:
      width - the width of the panel
      height - the height of the panel
      printerJob - a printer job
      Returns:
      a Graphics2D
    • createGraphics

      public Graphics2D createGraphics(float width, float height)
      Gets a Graphics2D to write on. The graphics are translated to PDF commands.
      Parameters:
      width - the width of the panel
      height - the height of the panel
      Returns:
      a Graphics2D
    • createPrinterGraphics

      public Graphics2D createPrinterGraphics(float width, float height, PrinterJob printerJob)
      Gets a Graphics2D to print on. The graphics are translated to PDF commands.
      Parameters:
      width - width of the panel
      height - height of the panel
      printerJob - PrinterJob
      Returns:
      a Graphics2D
    • createGraphics

      public Graphics2D createGraphics(float width, float height, boolean convertImagesToJPEG, float quality)
      Gets a Graphics2D to write on. The graphics are translated to PDF commands.
      Parameters:
      width - width of the panel
      height - height of the panel
      convertImagesToJPEG - if convert images to JPEG
      quality - quality fo the print
      Returns:
      a Graphics2D
    • createPrinterGraphics

      public Graphics2D createPrinterGraphics(float width, float height, boolean convertImagesToJPEG, float quality, PrinterJob printerJob)
      Gets a Graphics2D to print on. The graphics are translated to PDF commands.
      Parameters:
      width - width of the panel
      height - height of the panel
      convertImagesToJPEG - if convert images to JPEG
      quality - quality fo the print
      printerJob - PrinterJob
      Returns:
      a Graphics2D
    • createGraphicsShapes

      public Graphics2D createGraphicsShapes(float width, float height, boolean convertImagesToJPEG, float quality)
      Gets a Graphics2D to print on. The graphics are translated to PDF commands.
      Parameters:
      width - width of the panel
      height - height of the panel
      convertImagesToJPEG - if convert images to JPEG
      quality - quality fo the print
      Returns:
      A Graphics2D object
    • createPrinterGraphicsShapes

      public Graphics2D createPrinterGraphicsShapes(float width, float height, boolean convertImagesToJPEG, float quality, PrinterJob printerJob)
      Gets a Graphics2D to print on. The graphics are translated to PDF commands.
      Parameters:
      width - width of the panel
      height - height of the panel
      convertImagesToJPEG - if convert images to JPEG
      quality - quality fo the print
      printerJob - PrinterJob
      Returns:
      a Graphics2D object
    • createGraphics

      public Graphics2D createGraphics(float width, float height, FontMapper fontMapper)
      Gets a Graphics2D to write on. The graphics are translated to PDF commands.
      Parameters:
      width - the width of the panel
      height - the height of the panel
      fontMapper - the mapping from awt fonts to BaseFont
      Returns:
      a Graphics2D
    • createPrinterGraphics

      public Graphics2D createPrinterGraphics(float width, float height, FontMapper fontMapper, PrinterJob printerJob)
      Gets a Graphics2D to print on. The graphics are translated to PDF commands.
      Parameters:
      width - the width of the panel
      height - the height of the panel
      fontMapper - the mapping from awt fonts to BaseFont
      printerJob - a printer job
      Returns:
      a Graphics2D
    • createGraphics

      public Graphics2D createGraphics(float width, float height, FontMapper fontMapper, boolean convertImagesToJPEG, float quality)
      Gets a Graphics2D to write on. The graphics are translated to PDF commands.
      Parameters:
      width - the width of the panel
      height - the height of the panel
      fontMapper - the mapping from awt fonts to BaseFont
      convertImagesToJPEG - converts awt images to jpeg before inserting in pdf
      quality - the quality of the jpeg
      Returns:
      a Graphics2D
    • createPrinterGraphics

      public Graphics2D createPrinterGraphics(float width, float height, FontMapper fontMapper, boolean convertImagesToJPEG, float quality, PrinterJob printerJob)
      Gets a Graphics2D to print on. The graphics are translated to PDF commands.
      Parameters:
      width - the width of the panel
      height - the height of the panel
      fontMapper - the mapping from awt fonts to BaseFont
      convertImagesToJPEG - converts awt images to jpeg before inserting in pdf
      quality - the quality of the jpeg
      printerJob - a printer job
      Returns:
      a Graphics2D
    • getPageResources

      PageResources getPageResources()
    • setGState

      public void setGState(PdfGState gstate)
      Sets the graphic state
      Parameters:
      gstate - the graphic state
    • beginLayer

      public void beginLayer(PdfOCG layer)
      Begins a graphic block whose visibility is controlled by the layer. Blocks can be nested. Each block must be terminated by an endLayer().

      Note that nested layers with PdfLayer.addChild(PdfLayer) only require a single call to this method and a single call to endLayer(); all the nesting control is built in.

      Parameters:
      layer - the layer
    • beginLayer2

      private void beginLayer2(PdfOCG layer)
    • endLayer

      public void endLayer()
      Ends a layer controlled graphic block. It will end the most recent open block.
    • transform

      public void transform(AffineTransform af)
      Concatenates a transformation to the current transformation matrix.
      Parameters:
      af - the transformation
    • addAnnotation

      void addAnnotation(PdfAnnotation annot)
    • setDefaultColorspace

      public void setDefaultColorspace(PdfName name, PdfObject obj)
      Sets the default colorspace.
      Parameters:
      name - the name of the colorspace. It can be PdfName.DEFAULTGRAY, PdfName.DEFAULTRGB or PdfName.DEFAULTCMYK
      obj - the colorspace. A null or PdfNull removes any colorspace with the same name
    • beginMarkedContentSequence

      public void beginMarkedContentSequence(PdfStructureElement struc)
      Begins a marked content sequence. This sequence will be tagged with the structure struc. The same structure can be used several times to connect text that belongs to the same logical segment but is in a different location, like the same paragraph crossing to another page, for example.
      Parameters:
      struc - the tagging structure
    • beginMarkedContentSequence

      public void beginMarkedContentSequence(PdfStructureElement struc, PdfDictionary dict)
    • endMarkedContentSequence

      public void endMarkedContentSequence()
      Ends a marked content sequence
    • beginMarkedContentSequence

      public void beginMarkedContentSequence(PdfName tag, PdfDictionary property, boolean inline)
      Begins a marked content sequence. If property is null the mark will be of the type BMC otherwise it will be BDC.
      Parameters:
      tag - the tag
      property - the property
      inline - true to include the property in the content or false to include the property in the resource dictionary with the possibility of reusing
    • beginMarkedContentSequence

      public void beginMarkedContentSequence(PdfName tag)
      This is just a shorthand to beginMarkedContentSequence(tag, null, false).
      Parameters:
      tag - the tag
    • sanityCheck

      public void sanityCheck()
      Checks for any dangling state: Mismatched save/restore state, begin/end text, begin/end layer, or begin/end marked content sequence. If found, this function will throw. This function is called automatically during a reset() (from Document.newPage() for example), and before writing itself out in toPdf(). One possible cause: not calling myPdfGraphics2D.dispose() will leave dangling saveState() calls.
      Throws:
      IllegalPdfSyntaxException - (a runtime exception)
      Since:
      2.1.6