Class PdfCanvasProcessor

java.lang.Object
com.itextpdf.kernel.pdf.canvas.parser.PdfCanvasProcessor

public class PdfCanvasProcessor extends Object
Processor for a PDF content stream.
  • Field Details

    • DEFAULT_OPERATOR

      public static final String DEFAULT_OPERATOR
      See Also:
    • eventListener

      protected final IEventListener eventListener
      Listener that will be notified of render events
    • supportedEvents

      protected final Set<EventType> supportedEvents
      Cache supported events in case the user's IEventListener.getSupportedEvents() method is not very efficient
    • currentPath

      protected Path currentPath
    • isClip

      protected boolean isClip
      Indicates whether the current clipping path should be modified by intersecting it with the current path.
    • clippingRule

      protected int clippingRule
      Specifies the filling rule which should be applied while calculating new clipping path.
  • Constructor Details

    • PdfCanvasProcessor

      public PdfCanvasProcessor (IEventListener eventListener)
      Creates a new PDF Content Stream Processor that will send its output to the designated render listener.
      Parameters:
      eventListener - the IEventListener that will receive rendering notifications
    • PdfCanvasProcessor

      public PdfCanvasProcessor (IEventListener eventListener, Map<String,IContentOperator> additionalContentOperators)
      Creates a new PDF Content Stream Processor that will send its output to the designated render listener. Also allows registration of custom IContentOperators that can influence how (and whether or not) the PDF instructions will be parsed.
      Parameters:
      eventListener - the IEventListener that will receive rendering notifications
      additionalContentOperators - an optional map of custom IContentOperators for rendering instructions
  • Method Details

    • registerXObjectDoHandler

      public IXObjectDoHandler registerXObjectDoHandler (PdfName xobjectSubType, IXObjectDoHandler handler)
      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 handler
      handler - the handler that will receive notification when the Do operator for the specified subtype is encountered
      Returns:
      the existing registered handler, if any
    • registerContentOperator

      public IContentOperator registerContentOperator (String operatorString, IContentOperator operator)
      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 DEFAULT_OPERATOR for a catch-all operator
      operator - the operator that will receive notification when the operator is encountered
      Returns:
      the existing registered operator, if any
    • getRegisteredOperatorStrings

      public Collection<String> getRegisteredOperatorStrings()
      Gets the Collection containing all the registered operators strings.
      Returns:
      Collection containing all the registered operators strings.
    • reset

      public void reset()
      Resets the graphics state stack, matrices and resources.
    • getGraphicsState

      public ParserGraphicsState getGraphicsState()
      Gets the current ParserGraphicsState
      Returns:
      the current ParserGraphicsState
    • processContent

      public void processContent (byte[] contentBytes, PdfResources resources)
      Processes PDF syntax. Note: If you re-use a given PdfCanvasProcessor, you must call reset()
      Parameters:
      contentBytes - the bytes of a content stream
      resources - the resources of the content stream. Must not be null.
    • processPageContent

      public void processPageContent (PdfPage page)
      Processes PDF syntax. Note: If you re-use a given PdfCanvasProcessor, you must call reset()
      Parameters:
      page - the page to process
    • getEventListener

      public IEventListener getEventListener()
      Accessor method for the IEventListener object maintained in this class. Necessary for implementing custom ContentOperator implementations.
      Returns:
      the renderListener
    • populateOperators

      protected void populateOperators()
      Loads all the supported graphics and text state operators in a map.
    • paintPath

      protected void paintPath (int operation, int rule)
      Displays the current path.
      Parameters:
      operation - One of the possible combinations of PathRenderInfo.STROKE and PathRenderInfo.FILL values or PathRenderInfo.NO_OP
      rule - Either PdfCanvasConstants.FillingRule.NONZERO_WINDING or PdfCanvasConstants.FillingRule.EVEN_ODD In case it isn't applicable pass any byte value.
    • invokeOperator

      protected void invokeOperator (PdfLiteral operator, List<PdfObject> operands)
      Invokes an operator.
      Parameters:
      operator - the PDF Syntax of the operator
      operands - a list with operands
    • getXObjectStream

      protected PdfStream getXObjectStream (PdfName xobjectName)
    • getResources

      protected PdfResources getResources()
    • populateXObjectDoHandlers

      protected void populateXObjectDoHandlers()
    • getFont

      protected PdfFont getFont (PdfDictionary fontDict)
      Creates a PdfFont object by a font dictionary. The font may have been cached in case it is an indirect object.
      Parameters:
      fontDict - the font dictionary to create the font from
      Returns:
      the created font
    • beginMarkedContent

      protected void beginMarkedContent (PdfName tag, PdfDictionary dict)
      Add to the marked content stack
      Parameters:
      tag - the tag of the marked content
      dict - the PdfDictionary associated with the marked content
    • endMarkedContent

      protected void endMarkedContent()
      Remove the latest marked content from the stack. Keeps track of the BMC, BDC and EMC operators.
    • eventOccurred

      protected void eventOccurred (IEventData data, EventType type)
      This is a proxy to pass only those events to the event listener which are supported by it.
      Parameters:
      data - event data
      type - event type