Class COSStream

All Implemented Interfaces:
Closeable, AutoCloseable, COSObjectable
Direct Known Subclasses:
COSStreamArray

public class COSStream extends COSDictionary implements Closeable
This class represents a stream object in a PDF document.
Author:
Ben Litchfield
  • Constructor Details

    • COSStream

      public COSStream(RandomAccess storage)
      Constructor. Creates a new stream with an empty dictionary.
      Parameters:
      storage - The intermediate storage for the stream.
    • COSStream

      public COSStream(COSDictionary dictionary, RandomAccess storage)
      Constructor.
      Parameters:
      dictionary - The dictionary that is associated with this stream.
      storage - The intermediate storage for the stream.
  • Method Details

    • replaceWithStream

      public void replaceWithStream(COSStream stream)
      Deprecated.
      will be removed
      This will replace this object with the data from the new object. This is used to easily maintain referential integrity when changing references to new objects.
      Parameters:
      stream - The stream that have the new values in it.
    • getScratchFile

      public RandomAccess getScratchFile()
      Deprecated.
      the direct access to the scratch file will be removed.
      This will get the scratch file associated with this stream.
      Returns:
      The scratch file where this stream is being stored.
    • getStreamTokens

      public List<Object> getStreamTokens() throws IOException
      This will get all the tokens in the stream.
      Returns:
      All of the tokens in the stream.
      Throws:
      IOException - If there is an error parsing the stream.
    • getFilteredStream

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

      public long getFilteredLength() throws IOException
      This will get the length of the encoded stream.
      Returns:
      the length of the encoded stream as long
      Throws:
      IOException
    • setFilteredLength

      public void setFilteredLength(long length)
      This will set the expected length of the encoded stream. Call this method if the previously set expected length is wrong, to avoid further trouble.
      Parameters:
      length - the expected length of the encoded stream.
    • getFilteredLengthWritten

      public long getFilteredLengthWritten() throws IOException
      This will get the length of the data written in the encoded stream.
      Returns:
      the length of the data written in the encoded stream as long
      Throws:
      IOException
    • getUnfilteredStream

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

      public Object accept(ICOSVisitor visitor) throws COSVisitorException
      visitor pattern double dispatch method.
      Overrides:
      accept in class COSDictionary
      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
      Returns:
      the COSBase object representing the filters
    • createFilteredStream

      public OutputStream createFilteredStream() throws 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.
      Returns:
      A stream that can be written to.
      Throws:
      IOException - If there is an error creating the stream.
    • createFilteredStream

      public OutputStream createFilteredStream(COSBase expectedLength) throws 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.
      Parameters:
      expectedLength - An entry where a length is expected.
      Returns:
      A stream that can be written to.
      Throws:
      IOException - If there is an error creating the stream.
    • setFilters

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

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

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable