Class PdfCanvas

  • Direct Known Subclasses:
    PdfPatternCanvas, Type3Glyph

    public class PdfCanvas
    extends java.lang.Object
    PdfCanvas class represents an algorithm for writing data into content stream. To write into page content, create PdfCanvas from a page instance. To write into form XObject, create PdfCanvas from a form XObject instance. Make sure to call PdfCanvas.release() after you finished writing to the canvas. It will save some memory.
    • Field Detail

      • B

        private static final byte[] B
      • b

        private static final byte[] b
      • BDC

        private static final byte[] BDC
      • BI

        private static final byte[] BI
      • BMC

        private static final byte[] BMC
      • BStar

        private static final byte[] BStar
      • bStar

        private static final byte[] bStar
      • BT

        private static final byte[] BT
      • c

        private static final byte[] c
      • cm

        private static final byte[] cm
      • cs

        private static final byte[] cs
      • CS

        private static final byte[] CS
      • d

        private static final byte[] d
      • Do

        private static final byte[] Do
      • EI

        private static final byte[] EI
      • EMC

        private static final byte[] EMC
      • ET

        private static final byte[] ET
      • f

        private static final byte[] f
      • fStar

        private static final byte[] fStar
      • G

        private static final byte[] G
      • g

        private static final byte[] g
      • gs

        private static final byte[] gs
      • h

        private static final byte[] h
      • i

        private static final byte[] i
      • ID

        private static final byte[] ID
      • j

        private static final byte[] j
      • J

        private static final byte[] J
      • K

        private static final byte[] K
      • k

        private static final byte[] k
      • l

        private static final byte[] l
      • m

        private static final byte[] m
      • M

        private static final byte[] M
      • n

        private static final byte[] n
      • q

        private static final byte[] q
      • Q

        private static final byte[] Q
      • re

        private static final byte[] re
      • rg

        private static final byte[] rg
      • RG

        private static final byte[] RG
      • ri

        private static final byte[] ri
      • S

        private static final byte[] S
      • s

        private static final byte[] s
      • scn

        private static final byte[] scn
      • SCN

        private static final byte[] SCN
      • sh

        private static final byte[] sh
      • Tc

        private static final byte[] Tc
      • Td

        private static final byte[] Td
      • TD

        private static final byte[] TD
      • Tf

        private static final byte[] Tf
      • TJ

        private static final byte[] TJ
      • Tj

        private static final byte[] Tj
      • TL

        private static final byte[] TL
      • Tm

        private static final byte[] Tm
      • Tr

        private static final byte[] Tr
      • Ts

        private static final byte[] Ts
      • TStar

        private static final byte[] TStar
      • Tw

        private static final byte[] Tw
      • Tz

        private static final byte[] Tz
      • v

        private static final byte[] v
      • W

        private static final byte[] W
      • w

        private static final byte[] w
      • WStar

        private static final byte[] WStar
      • y

        private static final byte[] y
      • defaultDeviceGrayBlackColorCheckRequired

        private boolean defaultDeviceGrayBlackColorCheckRequired
      • gsStack

        protected java.util.Stack<CanvasGraphicsState> gsStack
        a LIFO stack of graphics state saved states.
      • contentStream

        protected PdfStream contentStream
        the content stream for this canvas object.
      • resources

        protected PdfResources resources
        the resources for the page that this canvas belongs to.
        See Also:
        PdfResources
      • document

        protected PdfDocument document
        the document that the resulting content stream of this canvas will be written to.
      • mcDepth

        protected int mcDepth
        a counter variable for the marked content stack.
      • layerDepth

        protected java.util.List<java.lang.Integer> layerDepth
        The list where we save/restore the layer depth.
      • drawingOnPage

        protected boolean drawingOnPage
    • Constructor Detail

      • PdfCanvas

        public PdfCanvas​(PdfStream contentStream,
                         PdfResources resources,
                         PdfDocument document)
        Creates PdfCanvas from content stream of page, form XObject, pattern etc.
        Parameters:
        contentStream - The content stream
        resources - The resources, a specialized dictionary that can be used by PDF instructions in the content stream
        document - The document that the resulting content stream will be written to
      • PdfCanvas

        public PdfCanvas​(PdfPage page)
        Convenience method for fast PdfCanvas creation by a certain page.
        Parameters:
        page - page to create canvas from.
      • PdfCanvas

        public PdfCanvas​(PdfPage page,
                         boolean wrapOldContent)
        Convenience method for fast PdfCanvas creation by a certain page.
        Parameters:
        page - page to create canvas from.
        wrapOldContent - true to wrap all old content streams into q/Q operators so that the state of old content streams would not affect the new one
      • PdfCanvas

        public PdfCanvas​(PdfFormXObject xObj,
                         PdfDocument document)
        Creates a PdfCanvas from a PdfFormXObject.
        Parameters:
        xObj - the PdfFormXObject used to create the PdfCanvas
        document - the document to which the resulting content stream will be written
      • PdfCanvas

        public PdfCanvas​(PdfDocument doc,
                         int pageNum)
        Convenience method for fast PdfCanvas creation by a certain page.
        Parameters:
        doc - The document
        pageNum - The page number
    • Method Detail

      • getResources

        public PdfResources getResources()
        Get the resources of the page that this canvas belongs to..
        Returns:
        PdfResources of the page that this canvas belongs to..
      • getDocument

        public PdfDocument getDocument()
        Get the document this canvas belongs to
        Returns:
        PdfDocument the document that this canvas belongs to
      • attachContentStream

        public void attachContentStream​(PdfStream contentStream)
        Attaches new content stream to the canvas. This method is supposed to be used when you want to write in different PdfStream keeping context (gsStack, currentGs, ...) the same.
        Parameters:
        contentStream - a content stream to attach.
      • release

        public void release()
        Releases the canvas. Use this method after you finished working with canvas.
      • saveState

        public PdfCanvas saveState()
        Saves graphics state.
        Returns:
        current canvas.
      • restoreState

        public PdfCanvas restoreState()
        Restores graphics state.
        Returns:
        current canvas.
      • concatMatrix

        public PdfCanvas concatMatrix​(double a,
                                      double b,
                                      double c,
                                      double d,
                                      double e,
                                      double f)
        Concatenates the 2x3 affine transformation matrix to the current matrix in the content stream managed by this Canvas. Contrast with setTextMatrix(float, float, float, float, float, float)
        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.
        e - operand 3,1 in the matrix.
        f - operand 3,2 in the matrix.
        Returns:
        current canvas
      • concatMatrix

        public PdfCanvas concatMatrix​(PdfArray array)
        Concatenates the 2x3 affine transformation matrix to the current matrix in the content stream managed by this Canvas. If an array not containing the 6 values of the matrix is passed, The current canvas is returned unchanged.
        Parameters:
        array - affine transformation stored as a PdfArray with 6 values
        Returns:
        current canvas
      • beginText

        public PdfCanvas beginText()
        Begins text block (PDF BT operator).
        Returns:
        current canvas.
      • endText

        public PdfCanvas endText()
        Ends text block (PDF ET operator).
        Returns:
        current canvas.
      • beginVariableText

        public PdfCanvas beginVariableText()
        Begins variable text block
        Returns:
        current canvas
      • endVariableText

        public PdfCanvas endVariableText()
        Ends variable text block
        Returns:
        current canvas
      • setFontAndSize

        public PdfCanvas setFontAndSize​(PdfFont font,
                                        float size)
        Sets font and size (PDF Tf operator).
        Parameters:
        font - The font
        size - The font size.
        Returns:
        The edited canvas.
      • moveText

        public PdfCanvas moveText​(double x,
                                  double y)
        Moves text by shifting text line matrix (PDF Td operator).
        Parameters:
        x - x coordinate.
        y - y coordinate.
        Returns:
        current canvas.
      • setLeading

        public PdfCanvas 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.
        Returns:
        current canvas.
      • moveTextWithLeading

        public PdfCanvas 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
        Returns:
        current canvas.
      • newlineText

        public PdfCanvas newlineText()
        Moves to the start of the next line.
        Returns:
        current canvas.
      • newlineShowText

        public PdfCanvas newlineShowText​(java.lang.String text)
        Moves to the next line and shows text.
        Parameters:
        text - the text to write
        Returns:
        current canvas.
      • newlineShowText

        public PdfCanvas newlineShowText​(float wordSpacing,
                                         float charSpacing,
                                         java.lang.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
        Returns:
        current canvas.
      • setTextRenderingMode

        public PdfCanvas setTextRenderingMode​(int textRenderingMode)
        Sets text rendering mode.
        Parameters:
        textRenderingMode - text rendering mode @see PdfCanvasConstants.
        Returns:
        current canvas.
      • setTextRise

        public PdfCanvas setTextRise​(float textRise)
        Sets the text rise parameter.
        This allows to write text in subscript or superscript mode.
        Parameters:
        textRise - a parameter
        Returns:
        current canvas.
      • setWordSpacing

        public PdfCanvas setWordSpacing​(float wordSpacing)
        Sets the word spacing parameter.
        Parameters:
        wordSpacing - a parameter
        Returns:
        current canvas.
      • setCharacterSpacing

        public PdfCanvas setCharacterSpacing​(float charSpacing)
        Sets the character spacing parameter.
        Parameters:
        charSpacing - a parameter
        Returns:
        current canvas.
      • setHorizontalScaling

        public PdfCanvas setHorizontalScaling​(float scale)
        Sets the horizontal scaling parameter.
        Parameters:
        scale - a parameter.
        Returns:
        current canvas.
      • setTextMatrix

        public PdfCanvas setTextMatrix​(float a,
                                       float b,
                                       float c,
                                       float d,
                                       float x,
                                       float y)
        Replaces the text matrix. Contrast with concatMatrix(double, double, double, double, double, double)
        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.
        Returns:
        current canvas.
      • setTextMatrix

        public PdfCanvas setTextMatrix​(float x,
                                       float y)
        Changes the text matrix.
        Parameters:
        x - operand 3,1 in the matrix.
        y - operand 3,2 in the matrix.
        Returns:
        current canvas.
      • showText

        public PdfCanvas showText​(java.lang.String text)
        Shows text (operator Tj).
        Parameters:
        text - text to show.
        Returns:
        current canvas.
      • showText

        public PdfCanvas showText​(GlyphLine text)
        Shows text (operator Tj).
        Parameters:
        text - text to show.
        Returns:
        current canvas.
      • showText

        public PdfCanvas showText​(GlyphLine text,
                                  java.util.Iterator<GlyphLine.GlyphLinePart> iterator)
        Shows text (operator Tj).
        Parameters:
        text - text to show.
        iterator - iterator over parts of the glyph line that should be wrapped into some marked content groups, e.g. /ActualText or /ReversedChars
        Returns:
        current canvas.
      • setDrawingOnPage

        public void setDrawingOnPage​(boolean drawingOnPage)
        Sets whether we are currently drawing on a page.
        Parameters:
        drawingOnPage - true if we are currently drawing on page false if not
      • getSubrangeWidth

        private float getSubrangeWidth​(GlyphLine text,
                                       int from,
                                       int to)
        Finds horizontal distance between the start of the `from` glyph and end of `to` glyph. Glyphs with placement are ignored. XAdvance is not taken into account neither before `from` nor after `to` glyphs.
      • getSubrangeYDelta

        private float getSubrangeYDelta​(GlyphLine text,
                                        int from,
                                        int to)
      • getWordSpacingAddition

        private float getWordSpacingAddition​(Glyph glyph)
      • showText

        public PdfCanvas showText​(PdfArray textArray)
        Shows text (operator TJ)
        Parameters:
        textArray - the text array. Each element of array can be a string or a number. If the element is a string, this operator shows the string. If it is a number, the operator adjusts the text position by that amount. The number is expressed in thousandths of a unit of text space. This amount is subtracted from the current horizontal or vertical coordinate, depending on the writing mode.
        Returns:
        current canvas.
      • moveTo

        public PdfCanvas moveTo​(double x,
                                double y)
        Move the current point (x, y), omitting any connecting line segment.
        Parameters:
        x - x coordinate.
        y - y coordinate.
        Returns:
        current canvas.
      • lineTo

        public PdfCanvas lineTo​(double x,
                                double y)
        Appends a straight line segment from the current point (x, y). The new current point is (x, y).
        Parameters:
        x - x coordinate.
        y - y coordinate.
        Returns:
        current canvas.
      • curveTo

        public PdfCanvas curveTo​(double x1,
                                 double y1,
                                 double x2,
                                 double y2,
                                 double x3,
                                 double 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.
        y3 - y coordinate of the ending point.
        Returns:
        current canvas.
      • curveTo

        public PdfCanvas curveTo​(double x2,
                                 double y2,
                                 double x3,
                                 double y3)
        Appends a Bezier 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.
        y3 - y coordinate of the ending point.
        Returns:
        current canvas.
      • curveFromTo

        public PdfCanvas curveFromTo​(double x1,
                                     double y1,
                                     double x3,
                                     double y3)
        Appends a Bezier 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.
        y3 - y coordinate of the ending point.
        Returns:
        current canvas.
      • arc

        public PdfCanvas arc​(double x1,
                             double y1,
                             double x2,
                             double y2,
                             double startAng,
                             double 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.
        Returns:
        current canvas.
      • arcContinuous

        public PdfCanvas arcContinuous​(double x1,
                                       double y1,
                                       double x2,
                                       double y2,
                                       double startAng,
                                       double extent)
        Draws a partial ellipse with the preceding line to the start of the arc to prevent path broking. The target arc is 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
        Returns:
        the current canvas
      • ellipse

        public PdfCanvas ellipse​(double x1,
                                 double y1,
                                 double x2,
                                 double 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
        Returns:
        current canvas.
      • bezierArc

        public static java.util.List<double[]> bezierArc​(double x1,
                                                         double y1,
                                                         double x2,
                                                         double y2,
                                                         double startAng,
                                                         double 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 double[]{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 double[] with the bezier curves.
      • rectangle

        public PdfCanvas rectangle​(double x,
                                   double y,
                                   double width,
                                   double height)
        Draws a rectangle.
        Parameters:
        x - x coordinate of the starting point.
        y - y coordinate of the starting point.
        width - width.
        height - height.
        Returns:
        current canvas.
      • rectangle

        public PdfCanvas rectangle​(Rectangle rectangle)
        Draws a rectangle.
        Parameters:
        rectangle - a rectangle to be drawn
        Returns:
        current canvas.
      • roundRectangle

        public PdfCanvas roundRectangle​(double x,
                                        double y,
                                        double width,
                                        double height,
                                        double radius)
        Draws rounded rectangle.
        Parameters:
        x - x coordinate of the starting point.
        y - y coordinate of the starting point.
        width - width.
        height - height.
        radius - radius of the arc corner.
        Returns:
        current canvas.
      • circle

        public PdfCanvas circle​(double x,
                                double y,
                                double 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.
        Returns:
        current canvas.
      • paintShading

        public PdfCanvas paintShading​(PdfShading shading)
        Paints a shading object and adds it to the resources of this canvas
        Parameters:
        shading - a shading object to be painted
        Returns:
        current canvas.
      • closePath

        public PdfCanvas closePath()
        Closes the current subpath by appending a straight line segment from the current point to the starting point of the subpath.
        Returns:
        current canvas.
      • closePathEoFillStroke

        public PdfCanvas closePathEoFillStroke()
        Closes the path, fills it using the even-odd rule to determine the region to fill and strokes it.
        Returns:
        current canvas.
      • closePathFillStroke

        public PdfCanvas closePathFillStroke()
        Closes the path, fills it using the non-zero winding number rule to determine the region to fill and strokes it.
        Returns:
        current canvas.
      • endPath

        public PdfCanvas endPath()
        Ends the path without filling or stroking it.
        Returns:
        current canvas.
      • stroke

        public PdfCanvas stroke()
        Strokes the path.
        Returns:
        current canvas.
      • clip

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

        public PdfCanvas 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.
        Returns:
        current canvas.
      • closePathStroke

        public PdfCanvas closePathStroke()
        Closes the path and strokes it.
        Returns:
        current canvas.
      • fill

        public PdfCanvas fill()
        Fills current path.
        Returns:
        current canvas.
      • fillStroke

        public PdfCanvas fillStroke()
        Fills the path using the non-zero winding number rule to determine the region to fill and strokes it.
        Returns:
        current canvas.
      • eoFill

        public PdfCanvas eoFill()
        EOFills current path.
        Returns:
        current canvas.
      • eoFillStroke

        public PdfCanvas eoFillStroke()
        Fills the path, using the even-odd rule to determine the region to fill and strokes it.
        Returns:
        current canvas.
      • setLineWidth

        public PdfCanvas setLineWidth​(float lineWidth)
        Sets line width.
        Parameters:
        lineWidth - line width.
        Returns:
        current canvas.
      • setLineCapStyle

        public PdfCanvas setLineCapStyle​(int lineCapStyle)
        Sets the line cap style, the shape to be used at the ends of open subpaths when they are stroked.
        Parameters:
        lineCapStyle - a line cap style to be set
        Returns:
        current canvas.
        See Also:
        for possible values.
      • setLineJoinStyle

        public PdfCanvas setLineJoinStyle​(int lineJoinStyle)
        Sets the line join style, the shape to be used at the corners of paths when they are stroked.
        Parameters:
        lineJoinStyle - a line join style to be set
        Returns:
        current canvas.
        See Also:
        for possible values.
      • setMiterLimit

        public PdfCanvas setMiterLimit​(float miterLimit)
        Sets the miter limit, a parameter specifying the maximum length a miter join may extend beyond the join point, relative to the angle of the line segments.
        Parameters:
        miterLimit - a miter limit to be set
        Returns:
        current canvas.
      • setLineDash

        public PdfCanvas 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
        Returns:
        current canvas.
      • setLineDash

        public PdfCanvas 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:
        phase - the value of the phase
        unitsOn - the number of units that must be 'on' (equals the number of units that must be 'off').
        Returns:
        current canvas.
      • setLineDash

        public PdfCanvas 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:
        phase - the value of the phase
        unitsOn - the number of units that must be 'on'
        unitsOff - the number of units that must be 'off'
        Returns:
        current canvas.
      • setLineDash

        public PdfCanvas 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
        Returns:
        current canvas.
      • setRenderingIntent

        public PdfCanvas setRenderingIntent​(PdfName renderingIntent)
        Set the rendering intent. possible values are: PdfName.AbsoluteColorimetric, PdfName.RelativeColorimetric, PdfName.Saturation, PdfName.Perceptual.
        Parameters:
        renderingIntent - a PdfName containing a color metric
        Returns:
        current canvas.
      • setFlatnessTolerance

        public PdfCanvas setFlatnessTolerance​(float flatnessTolerance)
        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:
        flatnessTolerance - a value
        Returns:
        current canvas.
      • setFillColor

        public PdfCanvas setFillColor​(Color color)
        Changes the current color for filling paths.
        Parameters:
        color - fill color.
        Returns:
        current canvas.
      • setStrokeColor

        public PdfCanvas setStrokeColor​(Color color)
        Changes the current color for stroking paths.
        Parameters:
        color - stroke color.
        Returns:
        current canvas.
      • setColor

        public PdfCanvas setColor​(Color color,
                                  boolean fill)
        Changes the current color for paths.
        Parameters:
        color - the new color.
        fill - set fill color (true) or stroke color (false)
        Returns:
        current canvas.
      • setColor

        public PdfCanvas setColor​(PdfColorSpace colorSpace,
                                  float[] colorValue,
                                  boolean fill)
        Changes the current color for paths.
        Parameters:
        colorSpace - the color space of the new color
        colorValue - a list of numerical values with a length corresponding to the specs of the color space. Values should be in the range [0,1]
        fill - set fill color (true) or stroke color (false)
        Returns:
        current canvas.
      • setColor

        public PdfCanvas setColor​(PdfColorSpace colorSpace,
                                  float[] colorValue,
                                  PdfPattern pattern,
                                  boolean fill)
        Changes the current color for paths with an explicitly defined pattern.
        Parameters:
        colorSpace - the color space of the new color
        colorValue - a list of numerical values with a length corresponding to the specs of the color space. Values should be in the range [0,1]
        pattern - a pattern for the colored line or area
        fill - set fill color (true) or stroke color (false)
        Returns:
        current canvas.
      • setFillColorGray

        public PdfCanvas setFillColorGray​(float g)
        Changes the current color for filling paths to a grayscale value.
        Parameters:
        g - a grayscale value in the range [0,1]
        Returns:
        current canvas.
      • setStrokeColorGray

        public PdfCanvas setStrokeColorGray​(float g)
        Changes the current color for stroking paths to a grayscale value.
        Parameters:
        g - a grayscale value in the range [0,1]
        Returns:
        current canvas.
      • resetFillColorGray

        public PdfCanvas resetFillColorGray()
        Changes the current color for filling paths to black.
        Returns:
        current canvas.
      • resetStrokeColorGray

        public PdfCanvas resetStrokeColorGray()
        Changes the current color for stroking paths to black.
        Returns:
        current canvas.
      • setFillColorRgb

        public PdfCanvas setFillColorRgb​(float r,
                                         float g,
                                         float b)
        Changes the current color for filling paths to an RGB value.
        Parameters:
        r - a red value in the range [0,1]
        g - a green value in the range [0,1]
        b - a blue value in the range [0,1]
        Returns:
        current canvas.
      • setStrokeColorRgb

        public PdfCanvas setStrokeColorRgb​(float r,
                                           float g,
                                           float b)
        Changes the current color for stroking paths to an RGB value.
        Parameters:
        r - a red value in the range [0,1]
        g - a green value in the range [0,1]
        b - a blue value in the range [0,1]
        Returns:
        current canvas.
      • setFillColorShading

        public PdfCanvas setFillColorShading​(PdfPattern.Shading shading)
        Adds or changes the shading of the current fill color path.
        Parameters:
        shading - the shading
        Returns:
        current canvas.
      • setStrokeColorShading

        public PdfCanvas setStrokeColorShading​(PdfPattern.Shading shading)
        Adds or changes the shading of the current stroke color path.
        Parameters:
        shading - the shading
        Returns:
        current canvas.
      • resetFillColorRgb

        public PdfCanvas resetFillColorRgb()
        Changes the current color for filling paths to black.
        Returns:
        current canvas.
      • resetStrokeColorRgb

        public PdfCanvas resetStrokeColorRgb()
        Changes the current color for stroking paths to black.
        Returns:
        current canvas.
      • setFillColorCmyk

        public PdfCanvas setFillColorCmyk​(float c,
                                          float m,
                                          float y,
                                          float k)
        Changes the current color for filling paths to a CMYK value.
        Parameters:
        c - a cyan value in the range [0,1]
        m - a magenta value in the range [0,1]
        y - a yellow value in the range [0,1]
        k - a key (black) value in the range [0,1]
        Returns:
        current canvas.
      • setStrokeColorCmyk

        public PdfCanvas setStrokeColorCmyk​(float c,
                                            float m,
                                            float y,
                                            float k)
        Changes the current color for stroking paths to a CMYK value.
        Parameters:
        c - a cyan value in the range [0,1]
        m - a magenta value in the range [0,1]
        y - a yellow value in the range [0,1]
        k - a key (black) value in the range [0,1]
        Returns:
        current canvas.
      • resetFillColorCmyk

        public PdfCanvas resetFillColorCmyk()
        Changes the current color for filling paths to black.
        Returns:
        current canvas.
      • resetStrokeColorCmyk

        public PdfCanvas resetStrokeColorCmyk()
        Changes the current color for stroking paths to black.
        Returns:
        current canvas.
      • beginLayer

        public PdfCanvas beginLayer​(IPdfOCG 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 to begin
        Returns:
        The edited canvas.
      • endLayer

        public PdfCanvas endLayer()
        Ends OCG layer.
        Returns:
        current canvas.
      • addImageWithTransformationMatrix

        public PdfXObject addImageWithTransformationMatrix​(ImageData image,
                                                           float a,
                                                           float b,
                                                           float c,
                                                           float d,
                                                           float e,
                                                           float f)
        Creates PdfImageXObject from image and adds it to canvas.

        The float arguments will be used in concatenating the transformation matrix as operands.

        Parameters:
        image - the image from which PdfImageXObject will be created
        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
        Returns:
        the created imageXObject or null in case of in-line image (asInline = true)
        See Also:
        concatMatrix(double, double, double, double, double, double)
      • addImageWithTransformationMatrix

        public PdfXObject addImageWithTransformationMatrix​(ImageData image,
                                                           float a,
                                                           float b,
                                                           float c,
                                                           float d,
                                                           float e,
                                                           float f,
                                                           boolean asInline)
        Creates PdfImageXObject from image and adds it to canvas.

        The float arguments will be used in concatenating the transformation matrix as operands.

        Parameters:
        image - the image from which PdfImageXObject will be created
        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
        asInline - true if to add image as in-line
        Returns:
        the created imageXObject or null in case of in-line image (asInline = true)
        See Also:
        concatMatrix(double, double, double, double, double, double)
      • addImageAt

        public PdfXObject addImageAt​(ImageData image,
                                     float x,
                                     float y,
                                     boolean asInline)
        Creates PdfImageXObject from image and adds it to the specified position.
        Parameters:
        image - the image from which PdfImageXObject will be created
        x - the horizontal position of the imageXObject
        y - the vertical position of the imageXObject
        asInline - true if to add image as in-line
        Returns:
        the created imageXObject or null in case of in-line image (asInline = true)
      • addXObjectWithTransformationMatrix

        public PdfCanvas addXObjectWithTransformationMatrix​(PdfXObject xObject,
                                                            float a,
                                                            float b,
                                                            float c,
                                                            float d,
                                                            float e,
                                                            float f)
        Adds PdfXObject to canvas.

        The float arguments will be used in concatenating the transformation matrix as operands.

        Parameters:
        xObject - the xObject to add
        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
        Returns:
        the current canvas
        See Also:
        concatMatrix(double, double, double, double, double, double)
      • addXObjectAt

        public PdfCanvas addXObjectAt​(PdfXObject xObject,
                                      float x,
                                      float y)
        Adds PdfXObject to the specified position.
        Parameters:
        xObject - the xObject to add
        x - the horizontal position of the xObject
        y - the vertical position of the xObject
        Returns:
        the current canvas
      • addXObject

        public PdfCanvas addXObject​(PdfXObject xObject)
        Adds PdfXObject on canvas.

        Note: the PdfImageXObject will be placed at coordinates (0, 0) with its original width and height, the PdfFormXObject will be fitted in its bBox.

        Parameters:
        xObject - the xObject to add
        Returns:
        the current canvas
      • setExtGState

        public PdfCanvas setExtGState​(PdfExtGState extGState)
        Sets the ExtGState dictionary for the current graphics state
        Parameters:
        extGState - a dictionary that maps resource names to graphics state parameter dictionaries
        Returns:
        current canvas.
      • setExtGState

        public PdfExtGState setExtGState​(PdfDictionary extGState)
        Sets the ExtGState dictionary for the current graphics state
        Parameters:
        extGState - a dictionary that maps resource names to graphics state parameter dictionaries
        Returns:
        current canvas.
      • beginMarkedContent

        public PdfCanvas beginMarkedContent​(PdfName tag)
        Manually start a Marked Content sequence. Used primarily for Tagged PDF
        Parameters:
        tag - the type of content contained
        Returns:
        current canvas
      • beginMarkedContent

        public PdfCanvas beginMarkedContent​(PdfName tag,
                                            PdfDictionary properties)
        Manually start a Marked Content sequence with properties. Used primarily for Tagged PDF
        Parameters:
        tag - the type of content that will be contained
        properties - the properties of the content, including Marked Content ID. If null, the PDF marker is BMC, else it is BDC
        Returns:
        current canvas
      • endMarkedContent

        public PdfCanvas endMarkedContent()
        Manually end a Marked Content sequence. Used primarily for Tagged PDF
        Returns:
        current canvas
      • openTag

        public PdfCanvas openTag​(CanvasTag tag)
        Manually open a canvas tag, beginning a Marked Content sequence. Used primarily for Tagged PDF
        Parameters:
        tag - the type of content that will be contained
        Returns:
        current canvas
      • openTag

        public PdfCanvas openTag​(TagReference tagReference)
        Open a tag, beginning a Marked Content sequence. This MC sequence will belong to the tag from the document logical structure.
        CanvasTag will be automatically created with assigned mcid(Marked Content id) to it. Mcid serves as a reference between Marked Content sequence and logical structure element.
        Parameters:
        tagReference - reference to the tag from the document logical structure
        Returns:
        current canvas
      • closeTag

        public PdfCanvas closeTag()
        Manually close a tag, ending a Marked Content sequence. Used primarily for Tagged PDF
        Returns:
        current canvas
      • writeLiteral

        public PdfCanvas writeLiteral​(java.lang.String s)
        Outputs a String directly to the content.
        Parameters:
        s - the String
        Returns:
        current canvas.
      • writeLiteral

        public PdfCanvas writeLiteral​(char c)
        Outputs a char directly to the content.
        Parameters:
        c - the char
        Returns:
        current canvas.
      • writeLiteral

        public PdfCanvas writeLiteral​(float n)
        Outputs a float directly to the content.
        Parameters:
        n - the float
        Returns:
        current canvas.
      • getContentStream

        public PdfStream getContentStream()
        Please, use this method with caution and only if you know what you are doing. Manipulating with underlying stream object of canvas could lead to corruption of it's data.
        Returns:
        the content stream to which this canvas object writes.
      • addInlineImage

        protected void addInlineImage​(PdfImageXObject imageXObject,
                                      float a,
                                      float b,
                                      float c,
                                      float d,
                                      float e,
                                      float f)
        Adds PdfImageXObject to canvas.
        Parameters:
        imageXObject - the PdfImageXObject 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
      • addFormWithTransformationMatrix

        private PdfCanvas addFormWithTransformationMatrix​(PdfFormXObject form,
                                                          float a,
                                                          float b,
                                                          float c,
                                                          float d,
                                                          float e,
                                                          float f,
                                                          boolean writeIdentityMatrix)
        Adds PdfFormXObject to canvas.
        Parameters:
        form - the formXObject to add
        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
        writeIdentityMatrix - true if the matrix is written in any case, otherwise if the isIdentityMatrix(float, float, float, float, float, float) method indicates that the matrix is identity, the matrix will not be written
        Returns:
        current canvas
      • addFormAt

        private PdfCanvas addFormAt​(PdfFormXObject form,
                                    float x,
                                    float y)
        Adds PdfFormXObject to the specified position.
        Parameters:
        form - the formXObject to add
        x - the horizontal position of the formXObject
        y - the vertical position of the formXObject
        Returns:
        the current canvas
      • addFormFittedIntoRectangle

        private PdfCanvas addFormFittedIntoRectangle​(PdfFormXObject form,
                                                     Rectangle rect)
        Adds PdfFormXObject fitted into specific rectangle on canvas.
        Parameters:
        form - the formXObject to add
        rect - the rectangle in which the formXObject will be fitted
        Returns:
        the current canvas
      • addImageWithTransformationMatrix

        private PdfCanvas addImageWithTransformationMatrix​(PdfXObject xObject,
                                                           float a,
                                                           float b,
                                                           float c,
                                                           float d,
                                                           float e,
                                                           float f)
        Adds PdfXObject to canvas.
        Parameters:
        xObject - the xObject to add
        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
        Returns:
        current canvas
      • addImageAt

        private PdfCanvas addImageAt​(PdfImageXObject image,
                                     float x,
                                     float y)
        Adds PdfImageXObject to the specified position.
        Parameters:
        image - the imageXObject to add
        x - the horizontal position of the imageXObject
        y - the vertical position of the imageXObject
        Returns:
        the current canvas
      • addImageFittedIntoRectangle

        private PdfCanvas addImageFittedIntoRectangle​(PdfImageXObject image,
                                                      Rectangle rect)
        Adds PdfImageXObject fitted into specific rectangle on canvas.
        Parameters:
        image - the imageXObject to add
        rect - the rectangle in which the imageXObject will be fitted
        Returns:
        current canvas
      • ensureStreamDataIsReadyToBeProcessed

        private PdfStream ensureStreamDataIsReadyToBeProcessed​(PdfStream stream)
      • showTextInt

        private void showTextInt​(java.lang.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.
      • checkIsoConformanceWritingOnContent

        private void checkIsoConformanceWritingOnContent()
      • addToPropertiesAndBeginLayer

        private void addToPropertiesAndBeginLayer​(IPdfOCG layer)
      • getDashPatternArray

        private PdfArray getDashPatternArray​(float phase)
      • getDashPatternArray

        private PdfArray getDashPatternArray​(float[] dashArray,
                                             float phase)
      • applyRotation

        private void applyRotation​(PdfPage page)
      • drawArc

        private PdfCanvas drawArc​(double x1,
                                  double y1,
                                  double x2,
                                  double y2,
                                  double startAng,
                                  double extent,
                                  boolean continuous)
      • checkDefaultDeviceGrayBlackColor

        private void checkDefaultDeviceGrayBlackColor​(PdfCanvas.CheckColorMode checkColorMode)
      • iteratorToList

        private static <T> java.util.List<T> iteratorToList​(java.util.Iterator<T> iterator)
      • calculateTransformationMatrix

        private static float[] calculateTransformationMatrix​(Vector expectedMin,
                                                             Vector expectedMax,
                                                             Vector actualMin,
                                                             Vector actualMax)
      • isIdentityMatrix

        private static boolean isIdentityMatrix​(float a,
                                                float b,
                                                float c,
                                                float d,
                                                float e,
                                                float f)