Package com.itextpdf.text.pdf.parser
Class PdfContentStreamProcessor
java.lang.Object
com.itextpdf.text.pdf.parser.PdfContentStreamProcessor
Processor for a PDF content Stream.
- Since:
- 2.1.4
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
A content operator implementation (BMC).private static class
A content operator implementation (BDC).private static class
A content operator implementation (BT).private static class
A content operator implementation (W, W*)private static class
A content operator implementation (h).private static class
A content operator implementation (c).private static class
A content operator implementation (v).private static class
A content operator implementation (y).private static class
A content operator implementation (Do).private static class
A content operator implementation (EMC).private static class
A content operator implementation (n).private static class
A content operator implementation (ET).private static class
An XObject subtype handler for FORMprivate static class
A content operator implementation (unregistered).private static class
An XObject subtype handler that does nothingprivate static class
An XObject subtype handler for IMAGEprivate static class
A content operator implementation (l).private static class
A content operator implementation (cm).private static class
A content operator implementation (').private static class
A content operator implementation (").private static class
A content operator implementation (m).private static class
A content operator implementation (S, s, f, F, f*, B, B*, b, b*).private static class
A content operator implementation (Q).private static class
A content operator implementation (gs).private static class
A content operator implementation (q).private static class
A content operator implementation (re).private static class
A resource dictionary that allows stack-like behavior to support resource dictionary inheritanceprivate static class
A content operator implementation (rg).private static class
A content operator implementation (RG).private static class
A content operator implementation (sc / scn).private static class
A content operator implementation (cs).private static class
A content operator implementation (CS).private static class
A content operator implementation (SC / SCN).private static class
A content operator implementation (g).private static class
A content operator implementation (G).private static class
A content operator implementation (J).private static class
A content operator implementation (d).private static class
A content operator implementation (j).private static class
A content operator implementation (w).private static class
A content operator implementation (M).private static class
A content operator implementation (rg).private static class
A content operator implementation (RG).private static class
A content operator implementation (Tc).private static class
A content operator implementation (Tf).private static class
A content operator implementation (Tz).private static class
A content operator implementation (TL).private static class
A content operator implementation (Tr).private static class
A content operator implementation (Ts).private static class
A content operator implementation (Tw).private static class
A content operator implementation (Tj).private static class
A content operator implementation (TJ).private static class
A content operator implementation (T*).private static class
A content operator implementation (Td).private static class
A content operator implementation (TD).private static class
A content operator implementation (Tm). -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Map<Integer,
WeakReference<CMapAwareDocumentFont>> static final String
Default operatorprivate final Stack<GraphicsState>
Stack keeping track of the graphics state.private final Stack<MarkedContentInfo>
A stack containing marked content info.private final Map<String,
ContentOperator> A map with all supported operators (PDF syntax).private final RenderListener
Listener that will be notified of render eventsResources for the content stream.private Matrix
Text line matrix.private Matrix
Text matrix.private final Map<PdfName,
XObjectDoHandler> A map with all supported XObject handlers -
Constructor Summary
ConstructorsConstructorDescriptionPdfContentStreamProcessor
(RenderListener renderListener) Creates a new PDF Content Stream Processor that will send it's output to the designated render listener. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
applyTextAdjust
(float tj) Adjusts the text matrix for the specified adjustment value (see TJ operator in the PDF spec for information)private void
beginMarkedContent
(PdfName tag, PdfDictionary dict) Add to the marked content stackprivate void
Used to trigger beginTextBlock on the renderListenerprivate void
clipPath
(int rule) private void
displayPdfString
(PdfString string) Displays text.private void
displayXObject
(PdfName xobjectName) Displays an XObject using the registered handler for this XObject's subtypeprivate void
Remove the latest marked content from the stack.private void
endText()
Used to trigger endTextBlock on the renderListenerprivate static BaseColor
Gets a color based on a list of operands.private static BaseColor
Gets a color based on a list of operands.private CMapAwareDocumentFont
getFont
(PdfDictionary fontResource) private CMapAwareDocumentFont
Gets the font pointed to by the indirect reference.Accessor method for the RenderListener object maintained in this class.gs()
Returns the current graphics state.protected void
handleInlineImage
(InlineImageInfo info, PdfDictionary colorSpaceDic) Callback when an inline image is found.private void
invokeOperator
(PdfLiteral operator, ArrayList<PdfObject> operands) Invokes an operator.private void
modifyPath
(int operation, List<Float> segmentData) Modifies the current path.private void
paintPath
(int operation, int rule, boolean close) Displays the current path.private void
Loads all the supported graphics and text state operators in a map.private void
void
processContent
(byte[] contentBytes, PdfDictionary resources) Processes PDF syntax.registerContentOperator
(String operatorString, ContentOperator operator) Registers a content operator that will be called when the specified operator string is encountered during content processing.registerXObjectDoHandler
(PdfName xobjectSubType, XObjectDoHandler handler) Registers a Do handler that will be called when Do for the provided XObject subtype is encountered during content processing.void
reset()
Resets the graphics state stack, matrices and resources.
-
Field Details
-
DEFAULTOPERATOR
Default operator- Since:
- 5.0.1
- See Also:
-
operators
A map with all supported operators (PDF syntax). -
resources
Resources for the content stream. -
gsStack
Stack keeping track of the graphics state. -
textMatrix
Text matrix. -
textLineMatrix
Text line matrix. -
renderListener
Listener that will be notified of render events -
xobjectDoHandlers
A map with all supported XObject handlers -
cachedFonts
-
markedContentStack
A stack containing marked content info.- Since:
- 5.0.2
-
-
Constructor Details
-
PdfContentStreamProcessor
Creates a new PDF Content Stream Processor that will send it's output to the designated render listener.- Parameters:
renderListener
- theRenderListener
that will receive rendering notifications
-
-
Method Details
-
populateXObjectDoHandlers
private void populateXObjectDoHandlers() -
registerXObjectDoHandler
Registers a Do handler that will be called when Do for the provided XObject subtype is encountered during content processing.
If you register a handler, it is a very good idea to pass the call on to the existing registered handler (returned by this call), otherwise you may inadvertently change the internal behavior of the processor.- Parameters:
xobjectSubType
- the XObject subtype this handler will process, or PdfName.DEFAULT for a catch-all handlerhandler
- the handler that will receive notification when the Do operator for the specified subtype is encountered- Returns:
- the existing registered handler, if any
- Since:
- 5.0.1
-
getFont
Gets the font pointed to by the indirect reference. The font may have been cached.- Parameters:
ind
- the indirect reference ponting to the font- Returns:
- the font
- Since:
- 5.0.6
-
getFont
-
populateOperators
private void populateOperators()Loads all the supported graphics and text state operators in a map. -
registerContentOperator
Registers a content operator that will be called when the specified operator string is encountered during content processing.
If you register an operator, it is a very good idea to pass the call on to the existing registered operator (returned by this call), otherwise you may inadvertently change the internal behavior of the processor.- Parameters:
operatorString
- the operator id, or DEFAULTOPERATOR for a catch-all operatoroperator
- the operator that will receive notification when the operator is encountered- Returns:
- the existing registered operator, if any
- Since:
- 2.1.7
-
getRegisteredOperatorStrings
- Returns:
Collection
containing all the registered operators strings- Since:
- 5.5.6
-
reset
public void reset()Resets the graphics state stack, matrices and resources. -
gs
Returns the current graphics state.- Returns:
- the graphics state
-
invokeOperator
Invokes an operator.- Parameters:
operator
- the PDF Syntax of the operatoroperands
- a list with operands- Throws:
Exception
-
beginMarkedContent
Add to the marked content stack- Parameters:
tag
- the tag of the marked contentdict
- the PdfDictionary associated with the marked content- Since:
- 5.0.2
-
endMarkedContent
private void endMarkedContent()Remove the latest marked content from the stack. Keeps track of the BMC, BDC and EMC operators.- Since:
- 5.0.2
-
beginText
private void beginText()Used to trigger beginTextBlock on the renderListener -
endText
private void endText()Used to trigger endTextBlock on the renderListener -
displayPdfString
Displays text.- Parameters:
string
- the text to display
-
displayXObject
Displays an XObject using the registered handler for this XObject's subtype- Parameters:
xobjectName
- the name of the XObject to retrieve from the resource dictionary- Throws:
IOException
-
paintPath
private void paintPath(int operation, int rule, boolean close) Displays the current path.- Parameters:
operation
- One of the possible combinations ofPathPaintingRenderInfo.STROKE
andPathPaintingRenderInfo.FILL
values orPathPaintingRenderInfo.NO_OP
rule
- EitherPathPaintingRenderInfo.NONZERO_WINDING_RULE
orPathPaintingRenderInfo.EVEN_ODD_RULE
In case it isn't applicable pass anybyte
value.close
- Indicates whether the path should be closed or not.- Since:
- 5.5.6
-
modifyPath
Modifies the current path.- Parameters:
operation
- Indicates which path-construction operation should be performed.segmentData
- Contains x, y components of points of a new segment being added to the current path. E.g. x1 y1 x2 y2 x3 y3 etc. It's ignored for "close subpath" operarion (h).
-
clipPath
private void clipPath(int rule) -
applyTextAdjust
private void applyTextAdjust(float tj) Adjusts the text matrix for the specified adjustment value (see TJ operator in the PDF spec for information)- Parameters:
tj
- the text adjustment
-
processContent
Processes PDF syntax. Note: If you re-use a givenPdfContentStreamProcessor
, you must callreset()
- Parameters:
contentBytes
- the bytes of a content streamresources
- the resources that come with the content stream
-
handleInlineImage
Callback when an inline image is found. This requires special handling because inline images don't follow the standard operator syntax- Parameters:
info
- the inline imagecolorSpaceDic
- the color space for the inline immage
-
getRenderListener
Accessor method for the RenderListener object maintained in this class. Necessary for implementing custom ContentOperator implementations.- Returns:
- the renderListener
-
getColor
Gets a color based on a list of operands. -
getColor
Gets a color based on a list of operands.
-