Class PDFStreamEngine

    • Constructor Detail

      • PDFStreamEngine

        protected PDFStreamEngine()
        Creates a new PDFStreamEngine.
    • Method Detail

      • addOperator

        public final void addOperator​(OperatorProcessor op)
        Adds an operator processor to the engine.
        Parameters:
        op - operator processor
      • processPage

        public void processPage​(PDPage page)
                         throws IOException
        This will initialise and process the contents of the stream.
        Parameters:
        page - the page to process
        Throws:
        IOException - if there is an error accessing the stream
      • showTransparencyGroup

        public void showTransparencyGroup​(PDFormXObject form)
                                   throws IOException
        Shows a transparency group from the content stream.
        Parameters:
        form - transparency group (form) XObject
        Throws:
        IOException - if the transparency group cannot be processed
      • showForm

        public void showForm​(PDFormXObject form)
                      throws IOException
        Shows a form from the content stream.
        Parameters:
        form - form XObject
        Throws:
        IOException - if the form cannot be processed
      • processType3Stream

        protected void processType3Stream​(PDType3CharProc charProc,
                                          Matrix textRenderingMatrix)
                                   throws IOException
        Processes a Type 3 character stream.
        Parameters:
        charProc - Type 3 character procedure
        textRenderingMatrix - the Text Rendering Matrix
        Throws:
        IOException
      • processAnnotation

        protected void processAnnotation​(PDAnnotation annotation,
                                         PDAppearanceStream appearance)
                                  throws IOException
        Process the given annotation with the specified appearance stream.
        Parameters:
        annotation - The annotation containing the appearance stream to process.
        appearance - The appearance stream to process.
        Throws:
        IOException
      • processTilingPattern

        protected final void processTilingPattern​(PDTilingPattern tilingPattern,
                                                  PDColor color,
                                                  PDColorSpace colorSpace)
                                           throws IOException
        Process the given tiling pattern.
        Parameters:
        tilingPattern - the tiling pattern
        color - color to use, if this is an uncoloured pattern, otherwise null.
        colorSpace - color space to use, if this is an uncoloured pattern, otherwise null.
        Throws:
        IOException
      • processTilingPattern

        protected final void processTilingPattern​(PDTilingPattern tilingPattern,
                                                  PDColor color,
                                                  PDColorSpace colorSpace,
                                                  Matrix patternMatrix)
                                           throws IOException
        Process the given tiling pattern. Allows the pattern matrix to be overridden for custom rendering.
        Parameters:
        tilingPattern - the tiling pattern
        color - color to use, if this is an uncoloured pattern, otherwise null.
        colorSpace - color space to use, if this is an uncoloured pattern, otherwise null.
        patternMatrix - the pattern matrix, may be overridden for custom rendering.
        Throws:
        IOException
      • showAnnotation

        public void showAnnotation​(PDAnnotation annotation)
                            throws IOException
        Shows the given annotation.
        Parameters:
        annotation - An annotation on the current page.
        Throws:
        IOException - If an error occurred reading the annotation
      • getAppearance

        public PDAppearanceStream getAppearance​(PDAnnotation annotation)
        Returns the appearance stream to process for the given annotation. May be used to render a specific appearance such as "hover".
        Parameters:
        annotation - The current annotation.
        Returns:
        The stream to process.
      • processChildStream

        protected void processChildStream​(PDContentStream contentStream,
                                          PDPage page)
                                   throws IOException
        Process a child stream of the given page. Cannot be used with #processPage(PDPage).
        Parameters:
        contentStream - the child content stream
        Throws:
        IOException - if there is an exception while processing the stream
      • beginText

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

        public void endText()
                     throws IOException
        Called when the ET operator is encountered. This method is for overriding in subclasses, the default implementation does nothing.
        Throws:
        IOException - if there was an error processing the text
      • showTextString

        public void showTextString​(byte[] string)
                            throws IOException
        Called when a string of text is to be shown.
        Parameters:
        string - the encoded text
        Throws:
        IOException - if there was an error showing the text
      • showTextStrings

        public void showTextStrings​(COSArray array)
                             throws IOException
        Called when a string of text with spacing adjustments is to be shown.
        Parameters:
        array - array of encoded text strings and adjustments
        Throws:
        IOException - if there was an error showing the text
      • applyTextAdjustment

        protected void applyTextAdjustment​(float tx,
                                           float ty)
                                    throws IOException
        Applies a text position adjustment from the TJ operator. May be overridden in subclasses.
        Parameters:
        tx - x-translation
        ty - y-translation
        Throws:
        IOException
      • showText

        protected void showText​(byte[] string)
                         throws IOException
        Process text from the PDF Stream. You should override this method if you want to perform an action when encoded text is being processed.
        Parameters:
        string - the encoded text
        Throws:
        IOException - if there is an error processing the string
      • showGlyph

        protected void showGlyph​(Matrix textRenderingMatrix,
                                 PDFont font,
                                 int code,
                                 String unicode,
                                 Vector displacement)
                          throws IOException
        Called when a glyph is to be processed.This method is intended for overriding in subclasses, the default implementation does nothing.
        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:
        IOException - if the glyph cannot be processed
      • showFontGlyph

        protected void showFontGlyph​(Matrix textRenderingMatrix,
                                     PDFont font,
                                     int code,
                                     String unicode,
                                     Vector displacement)
                              throws IOException
        Called when a glyph is to be processed.This method is intended for overriding in subclasses, the default implementation does nothing.
        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:
        IOException - if the glyph cannot be processed
      • showType3Glyph

        protected void showType3Glyph​(Matrix textRenderingMatrix,
                                      PDType3Font font,
                                      int code,
                                      String unicode,
                                      Vector displacement)
                               throws IOException
        Called when a glyph is to be processed.This method is intended for overriding in subclasses, the default implementation does nothing.
        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:
        IOException - if the glyph cannot be processed
      • processOperator

        public void processOperator​(String operation,
                                    List<COSBase> arguments)
                             throws IOException
        This is used to handle an operation.
        Parameters:
        operation - The operation to perform.
        arguments - The list of arguments.
        Throws:
        IOException - If there is an error processing the operation.
      • processOperator

        protected void processOperator​(Operator operator,
                                       List<COSBase> operands)
                                throws IOException
        This is used to handle an operation.
        Parameters:
        operator - The operation to perform.
        operands - The list of arguments.
        Throws:
        IOException - If there is an error processing the operation.
      • unsupportedOperator

        protected void unsupportedOperator​(Operator operator,
                                           List<COSBase> operands)
                                    throws IOException
        Called when an unsupported operator is encountered.
        Parameters:
        operator - The unknown operator.
        operands - The list of arguments.
        Throws:
        IOException
      • operatorException

        protected void operatorException​(Operator operator,
                                         List<COSBase> operands,
                                         IOException e)
                                  throws IOException
        Called when an exception is thrown by an operator.
        Parameters:
        operator - The unknown operator.
        operands - The list of operands.
        Throws:
        IOException
      • saveGraphicsState

        public void saveGraphicsState()
        Pushes the current graphics state to the stack.
      • restoreGraphicsState

        public void restoreGraphicsState()
        Pops the current graphics state from the stack.
      • saveGraphicsStack

        protected final Stack<PDGraphicsState> saveGraphicsStack()
        Saves the entire graphics stack.
      • restoreGraphicsStack

        protected final void restoreGraphicsStack​(Stack<PDGraphicsState> snapshot)
        Restores the entire graphics stack.
      • getGraphicsStackSize

        public int getGraphicsStackSize()
        Returns:
        Returns the size of the graphicsStack.
      • getGraphicsState

        public PDGraphicsState getGraphicsState()
        Returns:
        Returns the graphicsState.
      • getTextLineMatrix

        public Matrix getTextLineMatrix()
        Returns:
        Returns the textLineMatrix.
      • setTextLineMatrix

        public void setTextLineMatrix​(Matrix value)
        Parameters:
        value - The textLineMatrix to set.
      • getTextMatrix

        public Matrix getTextMatrix()
        Returns:
        Returns the textMatrix.
      • setTextMatrix

        public void setTextMatrix​(Matrix value)
        Parameters:
        value - The textMatrix to set.
      • setLineDashPattern

        public void setLineDashPattern​(COSArray array,
                                       int phase)
        Parameters:
        array - dash array
        phase - dash phase
      • getResources

        public PDResources getResources()
        Returns the stream' resources.
      • getCurrentPage

        public PDPage getCurrentPage()
        Returns the current page.
      • getInitialMatrix

        public Matrix getInitialMatrix()
        Gets the stream's initial matrix.
      • transformedPoint

        public android.graphics.PointF transformedPoint​(float x,
                                                        float y)
        Transforms a point using the CTM.
      • transformWidth

        protected float transformWidth​(float width)