Class PageDrawer


  • public class PageDrawer
    extends PDFGraphicsStreamEngine
    Paints a page in a PDF document to a Graphics context. May be subclassed to provide custom rendering.

    If you want to do custom graphics processing rather than Graphics2D rendering, then you should subclass PDFGraphicsStreamEngine instead. Subclassing PageDrawer is only suitable for cases where the goal is to render onto a Graphics2D surface. In that case you'll also have to subclass PDFRenderer and modify PDFRenderer.createPageDrawer(PageDrawerParameters).

    Author:
    Ben Litchfield
    • Constructor Detail

      • PageDrawer

        public PageDrawer​(PageDrawerParameters parameters)
                   throws java.io.IOException
        Constructor.
        Parameters:
        parameters - Parameters for page drawing.
        Throws:
        java.io.IOException - If there is an error loading properties from the file.
    • Method Detail

      • getAnnotationFilter

        public AnnotationFilter getAnnotationFilter()
        Return the AnnotationFilter.
        Returns:
        the AnnotationFilter
      • setAnnotationFilter

        public void setAnnotationFilter​(AnnotationFilter annotationFilter)
        Set the AnnotationFilter.

        Allows to only render annotation accepted by the filter.

        Parameters:
        annotationFilter - the AnnotationFilter
      • getRenderer

        public final PDFRenderer getRenderer()
        Returns the parent renderer.
      • getGraphics

        protected final java.awt.Graphics2D getGraphics()
        Returns the underlying Graphics2D. May be null if drawPage has not yet been called.
      • getLinePath

        protected final java.awt.geom.GeneralPath getLinePath()
        Returns the current line path. This is reset to empty after each fill/stroke.
      • drawPage

        public void drawPage​(java.awt.Graphics g,
                             PDRectangle pageSize)
                      throws java.io.IOException
        Draws the page to the requested context.
        Parameters:
        g - The graphics context to draw onto.
        pageSize - The size of the page to draw.
        Throws:
        java.io.IOException - If there is an IO error while drawing the page.
      • getPaint

        protected java.awt.Paint getPaint​(PDColor color)
                                   throws java.io.IOException
        Returns an AWT paint for the given PDColor.
        Parameters:
        color - The color to get a paint for. This can be an actual color or a pattern.
        Throws:
        java.io.IOException
      • beginText

        public void beginText()
                       throws java.io.IOException
        Description copied from class: PDFStreamEngine
        Called when the BT operator is encountered. This method is for overriding in subclasses, the default implementation does nothing.
        Overrides:
        beginText in class PDFStreamEngine
        Throws:
        java.io.IOException - if there was an error processing the text
      • endText

        public void endText()
                     throws java.io.IOException
        Description copied from class: PDFStreamEngine
        Called when the ET operator is encountered. This method is for overriding in subclasses, the default implementation does nothing.
        Overrides:
        endText in class PDFStreamEngine
        Throws:
        java.io.IOException - if there was an error processing the text
      • showFontGlyph

        protected void showFontGlyph​(Matrix textRenderingMatrix,
                                     PDFont font,
                                     int code,
                                     java.lang.String unicode,
                                     Vector displacement)
                              throws java.io.IOException
        Description copied from class: PDFStreamEngine
        Called when a glyph is to be processed.This method is intended for overriding in subclasses, the default implementation does nothing.
        Overrides:
        showFontGlyph in class PDFStreamEngine
        Parameters:
        textRenderingMatrix - the current text rendering matrix, Trm
        font - the current font
        code - internal PDF character code for the glyph
        unicode - the Unicode text for this glyph, or null if the PDF does provide it
        displacement - the displacement (i.e. advance) of the glyph in text space
        Throws:
        java.io.IOException - if the glyph cannot be processed
      • showType3Glyph

        protected void showType3Glyph​(Matrix textRenderingMatrix,
                                      PDType3Font font,
                                      int code,
                                      java.lang.String unicode,
                                      Vector displacement)
                               throws java.io.IOException
        Description copied from class: PDFStreamEngine
        Called when a glyph is to be processed.This method is intended for overriding in subclasses, the default implementation does nothing.
        Overrides:
        showType3Glyph in class PDFStreamEngine
        Parameters:
        textRenderingMatrix - the current text rendering matrix, Trm
        font - the current font
        code - internal PDF character code for the glyph
        unicode - the Unicode text for this glyph, or null if the PDF does provide it
        displacement - the displacement (i.e. advance) of the glyph in text space
        Throws:
        java.io.IOException - if the glyph cannot be processed
      • appendRectangle

        public void appendRectangle​(java.awt.geom.Point2D p0,
                                    java.awt.geom.Point2D p1,
                                    java.awt.geom.Point2D p2,
                                    java.awt.geom.Point2D p3)
        Description copied from class: PDFGraphicsStreamEngine
        Append a rectangle to the current path.
        Specified by:
        appendRectangle in class PDFGraphicsStreamEngine
        Parameters:
        p0 - point P0 of the rectangle.
        p1 - point P1 of the rectangle.
        p2 - point P2 of the rectangle.
        p3 - point P3 of the rectangle.
      • fillPath

        public void fillPath​(int windingRule)
                      throws java.io.IOException
        Description copied from class: PDFGraphicsStreamEngine
        Fill the path.
        Specified by:
        fillPath in class PDFGraphicsStreamEngine
        Parameters:
        windingRule - The winding rule this path will use.
        Throws:
        java.io.IOException - if something went wrong.
      • fillAndStrokePath

        public void fillAndStrokePath​(int windingRule)
                               throws java.io.IOException
        Fills and then strokes the path.
        Specified by:
        fillAndStrokePath in class PDFGraphicsStreamEngine
        Parameters:
        windingRule - The winding rule this path will use.
        Throws:
        java.io.IOException - If there is an IO error while filling the path.
      • clip

        public void clip​(int windingRule)
        Description copied from class: PDFGraphicsStreamEngine
        Modify the current clipping path by intersecting it with the current path. The clipping path will not be updated until the succeeding painting operator is called.
        Specified by:
        clip in class PDFGraphicsStreamEngine
        Parameters:
        windingRule - The winding rule which will be used for clipping.
      • moveTo

        public void moveTo​(float x,
                           float y)
        Description copied from class: PDFGraphicsStreamEngine
        Starts a new path at (x,y).
        Specified by:
        moveTo in class PDFGraphicsStreamEngine
        Parameters:
        x - x-coordinate of the target point.
        y - y-coordinate of the target point.
      • lineTo

        public void lineTo​(float x,
                           float y)
        Description copied from class: PDFGraphicsStreamEngine
        Draws a line from the current point to (x,y).
        Specified by:
        lineTo in class PDFGraphicsStreamEngine
        Parameters:
        x - x-coordinate of the end point of the line.
        y - y-coordinate of the end point of the line.
      • curveTo

        public void curveTo​(float x1,
                            float y1,
                            float x2,
                            float y2,
                            float x3,
                            float y3)
        Description copied from class: PDFGraphicsStreamEngine
        Draws a curve from the current point to (x3,y3) using (x1,y1) and (x2,y2) as control points.
        Specified by:
        curveTo in class PDFGraphicsStreamEngine
        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 end point of the curve.
        y3 - y-coordinate of the end point of the curve.
      • drawImage

        public void drawImage​(PDImage pdImage)
                       throws java.io.IOException
        Description copied from class: PDFGraphicsStreamEngine
        Draw the image.
        Specified by:
        drawImage in class PDFGraphicsStreamEngine
        Parameters:
        pdImage - The image to draw.
        Throws:
        java.io.IOException - if something went wrong.
      • shadingFill

        public void shadingFill​(COSName shadingName)
                         throws java.io.IOException
        Description copied from class: PDFGraphicsStreamEngine
        Fill with Shading.
        Specified by:
        shadingFill in class PDFGraphicsStreamEngine
        Parameters:
        shadingName - The name of the Shading Dictionary to use for this fill instruction.
        Throws:
        java.io.IOException - if something went wrong.
      • showAnnotation

        public void showAnnotation​(PDAnnotation annotation)
                            throws java.io.IOException
        Description copied from class: PDFStreamEngine
        Shows the given annotation.
        Overrides:
        showAnnotation in class PDFStreamEngine
        Parameters:
        annotation - An annotation on the current page.
        Throws:
        java.io.IOException - If an error occurred reading the annotation
      • showForm

        public void showForm​(PDFormXObject form)
                      throws java.io.IOException
        Shows a form from the content stream.
        Overrides:
        showForm in class PDFStreamEngine
        Parameters:
        form - form XObject
        Throws:
        java.io.IOException - if the form cannot be processed
      • showTransparencyGroup

        public void showTransparencyGroup​(PDTransparencyGroup form)
                                   throws java.io.IOException
        Description copied from class: PDFStreamEngine
        Shows a transparency group from the content stream.
        Overrides:
        showTransparencyGroup in class PDFStreamEngine
        Parameters:
        form - transparency group (form) XObject
        Throws:
        java.io.IOException - if the transparency group cannot be processed
      • beginMarkedContentSequence

        public void beginMarkedContentSequence​(COSName tag,
                                               COSDictionary properties)
        Called when a marked content group begins
        Overrides:
        beginMarkedContentSequence in class PDFStreamEngine
        Parameters:
        tag - indicates the role or significance of the sequence
        properties - optional properties