Class COSStreamArray

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, COSObjectable

    public class COSStreamArray
    extends COSStream
    This will take an array of streams and sequence them together.
    Version:
    $Revision: 1.10 $
    Author:
    Ben Litchfield
    • Constructor Detail

      • COSStreamArray

        public COSStreamArray​(COSArray array)
        Constructor.
        Parameters:
        array - The array of COSStreams to concatenate together.
    • Method Detail

      • get

        public COSBase get​(int index)
        This will get a stream (or the reference to a stream) from the array.
        Parameters:
        index - The index of the requested stream
        Returns:
        The stream object or a reference to a stream
      • getStreamCount

        public int getStreamCount()
        This will get the number of streams in the array.
        Returns:
        the number of streams
      • getScratchFile

        public RandomAccess getScratchFile()
        This will get the scratch file associated with this stream.
        Overrides:
        getScratchFile in class COSStream
        Returns:
        The scratch file where this stream is being stored.
      • getItem

        public COSBase getItem​(COSName key)
        This will get an object from this streams dictionary.
        Overrides:
        getItem in class COSDictionary
        Parameters:
        key - The key to the object.
        Returns:
        The dictionary object with the key or null if one does not exist.
      • getDictionaryObject

        public COSBase getDictionaryObject​(COSName key)
        This will get an object from this streams dictionary and dereference it if necessary.
        Overrides:
        getDictionaryObject in class COSDictionary
        Parameters:
        key - The key to the object.
        Returns:
        The dictionary object with the key or null if one does not exist.
      • getStreamTokens

        public java.util.List getStreamTokens()
                                       throws java.io.IOException
        This will get all the tokens in the stream.
        Overrides:
        getStreamTokens in class COSStream
        Returns:
        All of the tokens in the stream.
        Throws:
        java.io.IOException - If there is an error parsing the stream.
      • getDictionary

        public COSDictionary getDictionary()
        This will get the dictionary that is associated with this stream.
        Returns:
        the object that is associated with this stream.
      • getFilteredStream

        public java.io.InputStream getFilteredStream()
                                              throws java.io.IOException
        This will get the stream with all of the filters applied.
        Overrides:
        getFilteredStream in class COSStream
        Returns:
        the bytes of the physical (endoced) stream
        Throws:
        java.io.IOException - when encoding/decoding causes an exception
      • getUnfilteredStream

        public java.io.InputStream getUnfilteredStream()
                                                throws java.io.IOException
        This will get the logical content stream with none of the filters.
        Overrides:
        getUnfilteredStream in class COSStream
        Returns:
        the bytes of the logical (decoded) stream
        Throws:
        java.io.IOException - when encoding/decoding causes an exception
      • accept

        public java.lang.Object accept​(ICOSVisitor visitor)
                                throws COSVisitorException
        visitor pattern double dispatch method.
        Overrides:
        accept in class COSStream
        Parameters:
        visitor - The object to notify when visiting this object.
        Returns:
        any object, depending on the visitor implementation, or null
        Throws:
        COSVisitorException - If an error occurs while visiting this object.
      • getFilters

        public COSBase getFilters()
        This will return the filters to apply to the byte stream the method will return. - null if no filters are to be applied - a COSName if one filter is to be applied - a COSArray containing COSNames if multiple filters are to be applied
        Overrides:
        getFilters in class COSStream
        Returns:
        the COSBase object representing the filters
      • createFilteredStream

        public java.io.OutputStream createFilteredStream()
                                                  throws java.io.IOException
        This will create a new stream for which filtered byte should be written to. You probably don't want this but want to use the createUnfilteredStream, which is used to write raw bytes to.
        Overrides:
        createFilteredStream in class COSStream
        Returns:
        A stream that can be written to.
        Throws:
        java.io.IOException - If there is an error creating the stream.
      • createFilteredStream

        public java.io.OutputStream createFilteredStream​(COSBase expectedLength)
                                                  throws java.io.IOException
        This will create a new stream for which filtered byte should be written to. You probably don't want this but want to use the createUnfilteredStream, which is used to write raw bytes to.
        Overrides:
        createFilteredStream in class COSStream
        Parameters:
        expectedLength - An entry where a length is expected.
        Returns:
        A stream that can be written to.
        Throws:
        java.io.IOException - If there is an error creating the stream.
      • setFilters

        public void setFilters​(COSBase filters)
                        throws java.io.IOException
        set the filters to be applied to the stream.
        Overrides:
        setFilters in class COSStream
        Parameters:
        filters - The filters to set on this stream.
        Throws:
        java.io.IOException - If there is an error clearing the old filters.
      • createUnfilteredStream

        public java.io.OutputStream createUnfilteredStream()
                                                    throws java.io.IOException
        This will create an output stream that can be written to.
        Overrides:
        createUnfilteredStream in class COSStream
        Returns:
        An output stream which raw data bytes should be written to.
        Throws:
        java.io.IOException - If there is an error creating the stream.
      • appendStream

        public void appendStream​(COSStream streamToAppend)
        Appends a new stream to the array that represents this object's stream.
        Parameters:
        streamToAppend - The stream to append.
      • insertCOSStream

        public void insertCOSStream​(PDStream streamToBeInserted)
        Insert the given stream at the beginning of the existing stream array.
        Parameters:
        streamToBeInserted -