Package org.apache.pdfbox.rendering
Class PageDrawer
java.lang.Object
org.apache.pdfbox.contentstream.PDFStreamEngine
org.apache.pdfbox.contentstream.PDFGraphicsStreamEngine
org.apache.pdfbox.rendering.PageDrawer
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 override
PDFRenderer.createPageDrawer(PageDrawerParameters)
. See the OpaquePDFRenderer.java
example in the source code download on how to do this.
- Author:
- Ben Litchfield
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
appendRectangle
(Point2D p0, Point2D p1, Point2D p2, Point2D p3) Append a rectangle to the current path.void
beginMarkedContentSequence
(COSName tag, COSDictionary properties) Called when a marked content group beginsvoid
Called when the BT operator is encountered.void
clip
(int windingRule) Modify the current clipping path by intersecting it with the current path.void
Closes the current path.void
curveTo
(float x1, float y1, float x2, float y2, float x3, float y3) Draws a curve from the current point to (x3,y3) using (x1,y1) and (x2,y2) as control points.void
Draw the image.void
drawPage
(Graphics g, PDRectangle pageSize) Draws the page to the requested context.void
Called when a marked content group endsvoid
endPath()
Ends the current path without filling or stroking it.void
endText()
Called when the ET operator is encountered.void
fillAndStrokePath
(int windingRule) Fills and then strokes the path.void
fillPath
(int windingRule) Fill the path.Return the AnnotationFilter.Returns the current point of the current path.protected final Graphics2D
Returns the underlying Graphics2D.protected final GeneralPath
Returns the current line path.protected final Paint
Returns the non-stroking AWT Paint.protected Paint
Returns an AWT paint for the given PDColor.final PDFRenderer
Returns the parent renderer.void
lineTo
(float x, float y) Draws a line from the current point to (x,y).void
moveTo
(float x, float y) Starts a new path at (x,y).void
setAnnotationFilter
(AnnotationFilter annotationFilter) Set the AnnotationFilter.protected final void
setClip()
Sets the clipping path using caching for performance.void
shadingFill
(COSName shadingName) Fill with Shading.void
showAnnotation
(PDAnnotation annotation) Shows the given annotation.protected void
showFontGlyph
(Matrix textRenderingMatrix, PDFont font, int code, Vector displacement) Called when a glyph is to be processed.void
showForm
(PDFormXObject form) Shows a form from the content stream.void
Shows a transparency group from the content stream.protected void
showTransparencyGroupOnGraphics
(PDTransparencyGroup form, Graphics2D graphics) For advanced users, to extract the transparency group into a separate graphics device.protected void
showType3Glyph
(Matrix textRenderingMatrix, PDType3Font font, int code, Vector displacement) Called when a glyph is to be processed.void
Stroke the path.protected void
transferClip
(Graphics2D graphics) Transfer clip to the destination device.Methods inherited from class org.apache.pdfbox.contentstream.PDFGraphicsStreamEngine
getPage
Methods inherited from class org.apache.pdfbox.contentstream.PDFStreamEngine
addOperator, applyTextAdjustment, decreaseLevel, getAppearance, getCurrentPage, getGraphicsStackSize, getGraphicsState, getInitialMatrix, getLevel, getResources, getTextLineMatrix, getTextMatrix, increaseLevel, operatorException, processAnnotation, processChildStream, processOperator, processOperator, processPage, processSoftMask, processTilingPattern, processTilingPattern, processTransparencyGroup, processType3Stream, registerOperatorProcessor, restoreGraphicsStack, restoreGraphicsState, saveGraphicsStack, saveGraphicsState, setLineDashPattern, setTextLineMatrix, setTextMatrix, showFontGlyph, showGlyph, showGlyph, showText, showTextString, showTextStrings, showType3Glyph, transformedPoint, transformWidth, unsupportedOperator
-
Constructor Details
-
PageDrawer
Constructor.- Parameters:
parameters
- Parameters for page drawing.- Throws:
IOException
- If there is an error loading properties from the file.
-
-
Method Details
-
getAnnotationFilter
Return the AnnotationFilter.- Returns:
- the AnnotationFilter
-
setAnnotationFilter
Set the AnnotationFilter.Allows to only render annotation accepted by the filter.
- Parameters:
annotationFilter
- the AnnotationFilter
-
getRenderer
Returns the parent renderer. -
getGraphics
Returns the underlying Graphics2D. May be null if drawPage has not yet been called. -
getLinePath
Returns the current line path. This is reset to empty after each fill/stroke. -
drawPage
Draws the page to the requested context.- Parameters:
g
- The graphics context to draw onto.pageSize
- The size of the page to draw.- Throws:
IOException
- If there is an IO error while drawing the page.
-
getPaint
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:
IOException
-
setClip
protected final void setClip()Sets the clipping path using caching for performance. We track lastClip manually becauseGraphics.getClip()
returns a new object instead of the same one passed tosetClip()
. You may need to call this if you overrideshowGlyph()
. See PDFBOX-5093 for more. -
transferClip
Transfer clip to the destination device. Override this if you want to avoid to do slow intersecting operations but want the destination device to do this (e.g. SVG). You can get the individual clippings viaPDGraphicsState.getCurrentClippingPaths()
. See PDFBOX-5258 for sample code.- Parameters:
graphics
- graphics device
-
beginText
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 classPDFStreamEngine
- Throws:
IOException
- if there was an error processing the text
-
endText
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 classPDFStreamEngine
- Throws:
IOException
- if there was an error processing the text
-
showFontGlyph
protected void showFontGlyph(Matrix textRenderingMatrix, PDFont font, int code, Vector displacement) throws 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 classPDFStreamEngine
- Parameters:
textRenderingMatrix
- the current text rendering matrix, Trmfont
- the current fontcode
- internal PDF character code for the glyphdisplacement
- the displacement (i.e. advance) of the glyph in text space- Throws:
IOException
- if the glyph cannot be processed
-
showType3Glyph
protected void showType3Glyph(Matrix textRenderingMatrix, PDType3Font font, int code, Vector displacement) throws 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 classPDFStreamEngine
- Parameters:
textRenderingMatrix
- the current text rendering matrix, Trmfont
- the current fontcode
- internal PDF character code for the glyphdisplacement
- the displacement (i.e. advance) of the glyph in text space- Throws:
IOException
- if the glyph cannot be processed
-
appendRectangle
Description copied from class:PDFGraphicsStreamEngine
Append a rectangle to the current path.- Specified by:
appendRectangle
in classPDFGraphicsStreamEngine
- 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.
-
getNonStrokingPaint
Returns the non-stroking AWT Paint. You may need to call this if you overrideshowGlyph()
. See PDFBOX-5093 for more.- Returns:
- The non-stroking AWT Paint.
- Throws:
IOException
-
strokePath
Description copied from class:PDFGraphicsStreamEngine
Stroke the path.- Specified by:
strokePath
in classPDFGraphicsStreamEngine
- Throws:
IOException
- If there is an IO error while stroking the path.
-
fillPath
Description copied from class:PDFGraphicsStreamEngine
Fill the path.- Specified by:
fillPath
in classPDFGraphicsStreamEngine
- Parameters:
windingRule
- The winding rule this path will use.- Throws:
IOException
- if something went wrong.
-
fillAndStrokePath
Fills and then strokes the path.- Specified by:
fillAndStrokePath
in classPDFGraphicsStreamEngine
- Parameters:
windingRule
- The winding rule this path will use.- Throws:
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 classPDFGraphicsStreamEngine
- 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 classPDFGraphicsStreamEngine
- 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 classPDFGraphicsStreamEngine
- 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 classPDFGraphicsStreamEngine
- 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.
-
getCurrentPoint
Description copied from class:PDFGraphicsStreamEngine
Returns the current point of the current path.- Specified by:
getCurrentPoint
in classPDFGraphicsStreamEngine
- Returns:
- the current point.
-
closePath
public void closePath()Description copied from class:PDFGraphicsStreamEngine
Closes the current path.- Specified by:
closePath
in classPDFGraphicsStreamEngine
-
endPath
public void endPath()Description copied from class:PDFGraphicsStreamEngine
Ends the current path without filling or stroking it. The clipping path is updated here.- Specified by:
endPath
in classPDFGraphicsStreamEngine
-
drawImage
Description copied from class:PDFGraphicsStreamEngine
Draw the image.- Specified by:
drawImage
in classPDFGraphicsStreamEngine
- Parameters:
pdImage
- The image to draw.- Throws:
IOException
- if something went wrong.
-
shadingFill
Description copied from class:PDFGraphicsStreamEngine
Fill with Shading.- Specified by:
shadingFill
in classPDFGraphicsStreamEngine
- Parameters:
shadingName
- The name of the Shading Dictionary to use for this fill instruction.- Throws:
IOException
- if something went wrong.
-
showAnnotation
Description copied from class:PDFStreamEngine
Shows the given annotation.- Overrides:
showAnnotation
in classPDFStreamEngine
- Parameters:
annotation
- An annotation on the current page.- Throws:
IOException
- If an error occurred reading the annotation
-
showForm
Shows a form from the content stream.- Overrides:
showForm
in classPDFStreamEngine
- Parameters:
form
- form XObject- Throws:
IOException
- if the form cannot be processed
-
showTransparencyGroup
Description copied from class:PDFStreamEngine
Shows a transparency group from the content stream.- Overrides:
showTransparencyGroup
in classPDFStreamEngine
- Parameters:
form
- transparency group (form) XObject- Throws:
IOException
- if the transparency group cannot be processed
-
showTransparencyGroupOnGraphics
protected void showTransparencyGroupOnGraphics(PDTransparencyGroup form, Graphics2D graphics) throws IOException For advanced users, to extract the transparency group into a separate graphics device.- Parameters:
form
-graphics
-- Throws:
IOException
-
beginMarkedContentSequence
Called when a marked content group begins- Overrides:
beginMarkedContentSequence
in classPDFStreamEngine
- Parameters:
tag
- indicates the role or significance of the sequenceproperties
- optional properties
-
endMarkedContentSequence
public void endMarkedContentSequence()Called when a marked content group ends- Overrides:
endMarkedContentSequence
in classPDFStreamEngine
-