Package org.apache.fop.render.pdf
Class PDFContentGenerator
- java.lang.Object
-
- org.apache.fop.render.pdf.PDFContentGenerator
-
public class PDFContentGenerator extends java.lang.ObjectGenerator class encapsulating all object references and state necessary to generate a PDF content stream.
-
-
Field Summary
Fields Modifier and Type Field Description protected PDFPaintingStatecurrentStatedrawing stateprotected PDFTextUtiltextutilText generation utility holding the current font statusprotected static booleanWRITE_COMMENTSControls whether comments are written to the PDF stream.
-
Constructor Summary
Constructors Constructor Description PDFContentGenerator(PDFDocument document, java.io.OutputStream out, PDFResourceContext resourceContext)Main constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(java.lang.String content)Adds content to the stream.protected voidbeginMarkedContentSequence(java.lang.String structElemType, int mcid)Begins a new marked content sequence (BDC or BMC).protected voidbeginMarkedContentSequence(java.lang.String structElemType, int mcid, java.lang.String actualText)Begins a new marked content sequence (BDC or BMC).protected voidbeginTextObject()Indicates the beginning of a text object.protected voidbeginTextObject(java.lang.String structElemType, int mcid)Indicates the beginning of a marked-content text object.protected voidbeginTextObject(java.lang.String structElemType, int mcid, java.lang.String actualText)Indicates the beginning of a marked-content text object.voidclipRect(java.awt.Rectangle rect)Intersects the current clip region with the given rectangle.protected voidcomment(java.lang.String text)Writes out a comment.voidconcatenate(java.awt.geom.AffineTransform transform)Concatenates the given transformation matrix with the current one.protected voidendTextObject()Indicates the end of a text object.voidflushPDFDoc()Flushes all queued PDF objects ready to be written to the output stream.static java.lang.Stringformat(float value)Formats a float value (normally coordinates in points) as Strings.java.awt.geom.AffineTransformgetAffineTransform()PDFDocumentgetDocument()Returns the applicable resource context for the generator.java.io.OutputStreamgetOutputStream()Returns the output stream the PDF document is written to.PDFResourceContextgetResourceContext()Returns the applicable resource context for the generator.PDFPaintingStategetState()Returns thePDFPaintingStateassociated with this instance.PDFStreamgetStream()Returns thePDFStreamassociated with this instance.PDFTextUtilgetTextUtil()Returns thePDFTextUtilassociated with this instance.voidplaceImage(float x, float y, float w, float h, PDFXObject xobj)Places a previously registered image at a certain place on the page.voidplaceImage(float x, float y, float w, float h, PDFXObject xobj, java.lang.String structElemType, int mcid)Places a previously registered image at a certain place on the page, bracketing it as a marked-content sequence.voidplaceImage(java.awt.geom.AffineTransform at, java.lang.String stream)protected voidrestoreGraphicsState()Same asrestoreGraphicsState(boolean), withtrueas a parameter.protected voidrestoreGraphicsState(boolean popState)Restored the graphics state valid before the previoussaveGraphicsState().protected voidrestoreGraphicsStateAccess()Same asrestoreGraphicsState(), additionally ending the current marked content sequence if any.protected voidsaveGraphicsState()Save graphics state.protected voidsaveGraphicsState(java.lang.String layer)Save graphics state with optional layer.protected voidsaveGraphicsState(java.lang.String structElemType, int sequenceNum)Save graphics state.voidsetColor(java.awt.Color col, boolean fill)Establishes a new foreground or fill color.protected voidsetColor(java.awt.Color col, boolean fill, java.lang.StringBuffer pdf)Establishes a new foreground or fill color.voidsetColor(java.awt.Color col, boolean fill, PDFStream stream)Establishes a new foreground or fill color.voidupdateCharacterSpacing(float value)Sets the current character spacing (Tc) value.voidupdateColor(java.awt.Color col, boolean fill, java.lang.StringBuffer pdf)Establishes a new foreground or fill color.voidupdateLineWidth(float width)Sets the current line width in points.
-
-
-
Field Detail
-
WRITE_COMMENTS
protected static final boolean WRITE_COMMENTS
Controls whether comments are written to the PDF stream.- See Also:
- Constant Field Values
-
currentState
protected PDFPaintingState currentState
drawing state
-
textutil
protected PDFTextUtil textutil
Text generation utility holding the current font status
-
-
Constructor Detail
-
PDFContentGenerator
public PDFContentGenerator(PDFDocument document, java.io.OutputStream out, PDFResourceContext resourceContext)
Main constructor. Creates a new PDF stream and additional helper classes for text painting and state management.- Parameters:
document- the PDF documentout- the output stream the PDF document is generated toresourceContext- the resource context
-
-
Method Detail
-
getAffineTransform
public java.awt.geom.AffineTransform getAffineTransform()
-
getDocument
public PDFDocument getDocument()
Returns the applicable resource context for the generator.- Returns:
- the resource context
-
getOutputStream
public java.io.OutputStream getOutputStream()
Returns the output stream the PDF document is written to.- Returns:
- the output stream
-
getResourceContext
public PDFResourceContext getResourceContext()
Returns the applicable resource context for the generator.- Returns:
- the resource context
-
getStream
public PDFStream getStream()
Returns thePDFStreamassociated with this instance.- Returns:
- the PDF stream
-
getState
public PDFPaintingState getState()
Returns thePDFPaintingStateassociated with this instance.- Returns:
- the PDF state
-
getTextUtil
public PDFTextUtil getTextUtil()
Returns thePDFTextUtilassociated with this instance.- Returns:
- the text utility
-
flushPDFDoc
public void flushPDFDoc() throws java.io.IOExceptionFlushes all queued PDF objects ready to be written to the output stream.- Throws:
java.io.IOException- if an error occurs while flushing the PDF objects
-
comment
protected void comment(java.lang.String text)
Writes out a comment.- Parameters:
text- text for the comment
-
saveGraphicsState
protected void saveGraphicsState()
Save graphics state.
-
saveGraphicsState
protected void saveGraphicsState(java.lang.String layer)
Save graphics state with optional layer.
-
saveGraphicsState
protected void saveGraphicsState(java.lang.String structElemType, int sequenceNum)Save graphics state.- Parameters:
structElemType- an element typesequenceNum- a sequence number
-
beginMarkedContentSequence
protected void beginMarkedContentSequence(java.lang.String structElemType, int mcid)Begins a new marked content sequence (BDC or BMC). IfstructElemTypeis null, a BMC operator with an "Artifact" tag is generated. Otherwise, a BDC operator withstructElemTypeas a tag is generated, and the given mcid stored in its property list.- Parameters:
structElemType- the type of the associated structure elementmcid- the marked content identifier
-
beginMarkedContentSequence
protected void beginMarkedContentSequence(java.lang.String structElemType, int mcid, java.lang.String actualText)Begins a new marked content sequence (BDC or BMC). IfstructElemTypeis null, a BMC operator with an "Artifact" tag is generated. Otherwise, a BDC operator withstructElemTypeas a tag is generated, and the given mcid and actual text are stored in its property list.- Parameters:
structElemType- the type of the associated structure elementmcid- the marked content identifieractualText- the replacement text for the marked content
-
restoreGraphicsState
protected void restoreGraphicsState(boolean popState)
Restored the graphics state valid before the previoussaveGraphicsState().- Parameters:
popState- true if the state should also be popped, false if only the PDF command should be issued
-
restoreGraphicsState
protected void restoreGraphicsState()
Same asrestoreGraphicsState(boolean), withtrueas a parameter.
-
restoreGraphicsStateAccess
protected void restoreGraphicsStateAccess()
Same asrestoreGraphicsState(), additionally ending the current marked content sequence if any.
-
beginTextObject
protected void beginTextObject()
Indicates the beginning of a text object.
-
beginTextObject
protected void beginTextObject(java.lang.String structElemType, int mcid)Indicates the beginning of a marked-content text object.- Parameters:
structElemType- structure element typemcid- sequence number- See Also:
beginTextObject(),beginMarkedContentSequence(String, int)
-
beginTextObject
protected void beginTextObject(java.lang.String structElemType, int mcid, java.lang.String actualText)Indicates the beginning of a marked-content text object.- Parameters:
structElemType- structure element typemcid- sequence numberactualText- the replacement text for the marked content- See Also:
beginTextObject(),beginMarkedContentSequence(java.lang.String, int)
-
endTextObject
protected void endTextObject()
Indicates the end of a text object.
-
concatenate
public void concatenate(java.awt.geom.AffineTransform transform)
Concatenates the given transformation matrix with the current one.- Parameters:
transform- the transformation matrix (in points)
-
clipRect
public void clipRect(java.awt.Rectangle rect)
Intersects the current clip region with the given rectangle.- Parameters:
rect- the clip rectangle
-
add
public void add(java.lang.String content)
Adds content to the stream.- Parameters:
content- the PDF content
-
format
public static final java.lang.String format(float value)
Formats a float value (normally coordinates in points) as Strings.- Parameters:
value- the value- Returns:
- the formatted value
-
updateLineWidth
public void updateLineWidth(float width)
Sets the current line width in points.- Parameters:
width- line width in points
-
updateCharacterSpacing
public void updateCharacterSpacing(float value)
Sets the current character spacing (Tc) value.- Parameters:
value- the Tc value (in unscaled text units)
-
setColor
public void setColor(java.awt.Color col, boolean fill, PDFStream stream)Establishes a new foreground or fill color.- Parameters:
col- the color to applyfill- true to set the fill color, false for the foreground colorstream- the PDFStream to write the PDF code to
-
setColor
public void setColor(java.awt.Color col, boolean fill)Establishes a new foreground or fill color.- Parameters:
col- the color to applyfill- true to set the fill color, false for the foreground color
-
setColor
protected void setColor(java.awt.Color col, boolean fill, java.lang.StringBuffer pdf)Establishes a new foreground or fill color. In contrast to updateColor this method does not check the PDFState for optimization possibilities.- Parameters:
col- the color to applyfill- true to set the fill color, false for the foreground colorpdf- StringBuffer to write the PDF code to, if null, the code is written to the current stream.
-
updateColor
public void updateColor(java.awt.Color col, boolean fill, java.lang.StringBuffer pdf)Establishes a new foreground or fill color.- Parameters:
col- the color to apply (null skips this operation)fill- true to set the fill color, false for the foreground colorpdf- StringBuffer to write the PDF code to, if null, the code is written to the current stream.
-
placeImage
public void placeImage(float x, float y, float w, float h, PDFXObject xobj)Places a previously registered image at a certain place on the page.- Parameters:
x- X coordinatey- Y coordinatew- width for imageh- height for imagexobj- the image XObject
-
placeImage
public void placeImage(java.awt.geom.AffineTransform at, java.lang.String stream)
-
placeImage
public void placeImage(float x, float y, float w, float h, PDFXObject xobj, java.lang.String structElemType, int mcid)Places a previously registered image at a certain place on the page, bracketing it as a marked-content sequence.- Parameters:
x- X coordinatey- Y coordinatew- width for imageh- height for imagexobj- the image XObjectstructElemType- structure element typemcid- sequence number- See Also:
beginMarkedContentSequence(String, int)
-
-