Class COSStream

All Implemented Interfaces:
Closeable, AutoCloseable, COSUpdateInfo, COSObjectable

public class COSStream extends COSDictionary implements Closeable
This class represents a stream object in a PDF document.
  • Field Details

    • randomAccess

      private RandomAccess randomAccess
    • scratchFile

      private final ScratchFile scratchFile
    • isWriting

      private boolean isWriting
    • LOG

      private static final org.apache.commons.logging.Log LOG
  • Constructor Details

    • COSStream

      public COSStream()
      Creates a new stream with an empty dictionary.

      Try to avoid using this constructor because it creates a new scratch file in memory. Instead, use document.getDocument().createCOSStream() which will use the existing scratch file (in memory or in temp file) of the document.

    • COSStream

      public COSStream(ScratchFile scratchFile)
      Creates a new stream with an empty dictionary. Data is stored in the given scratch file.
      Parameters:
      scratchFile - Scratch file for writing stream data.
  • Method Details

    • checkClosed

      private void checkClosed() throws IOException
      Throws if the random access backing store has been closed. Helpful for catching cases where a user tries to use a COSStream which has outlived its COSDocument.
      Throws:
      IOException
    • getFilteredStream

      @Deprecated public InputStream getFilteredStream() throws IOException
      Deprecated.
      This will get the stream with all of the filters applied.
      Returns:
      the bytes of the physical (encoded) stream
      Throws:
      IOException - when encoding causes an exception
    • ensureRandomAccessExists

      private void ensureRandomAccessExists(boolean forInputStream) throws IOException
      Ensures randomAccess is not null by creating a buffer from scratchFile if needed.
      Parameters:
      forInputStream - if true and randomAccess is null a debug message is logged - input stream should be retrieved after data being written to stream
      Throws:
      IOException
    • createRawInputStream

      public InputStream createRawInputStream() throws IOException
      Returns a new InputStream which reads the encoded PDF stream data. Experts only!
      Returns:
      InputStream containing raw, encoded PDF stream data.
      Throws:
      IOException - If the stream could not be read.
    • getUnfilteredStream

      @Deprecated public InputStream getUnfilteredStream() throws IOException
      Deprecated.
      Use createInputStream() instead.
      This will get the logical content stream with none of the filters.
      Returns:
      the bytes of the logical (decoded) stream
      Throws:
      IOException - when decoding causes an exception
    • createInputStream

      public COSInputStream createInputStream() throws IOException
      Returns a new InputStream which reads the decoded stream data.
      Returns:
      InputStream containing decoded stream data.
      Throws:
      IOException - If the stream could not be read.
    • createInputStream

      public COSInputStream createInputStream(DecodeOptions options) throws IOException
      Throws:
      IOException
    • createUnfilteredStream

      @Deprecated public OutputStream createUnfilteredStream() throws IOException
      Deprecated.
      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.
    • createOutputStream

      public OutputStream createOutputStream() throws IOException
      Returns a new OutputStream for writing stream data, using the current filters.
      Returns:
      OutputStream for un-encoded stream data.
      Throws:
      IOException - If the output stream could not be created.
    • createOutputStream

      public OutputStream createOutputStream(COSBase filters) throws IOException
      Returns a new OutputStream for writing stream data, using and the given filters.
      Parameters:
      filters - COSArray or COSName of filters to be used.
      Returns:
      OutputStream for un-encoded stream data.
      Throws:
      IOException - If the output stream could not be created.
    • createFilteredStream

      @Deprecated public OutputStream createFilteredStream() throws IOException
      Deprecated.
      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.
    • createRawOutputStream

      public OutputStream createRawOutputStream() throws IOException
      Returns a new OutputStream for writing encoded PDF data. Experts only!
      Returns:
      OutputStream for raw PDF stream data.
      Throws:
      IOException - If the output stream could not be created.
    • getFilterList

      private List<Filter> getFilterList() throws IOException
      Returns the list of filters.
      Throws:
      IOException
    • getLength

      public long getLength()
      Returns the length of the encoded stream.
      Returns:
      length in bytes
    • 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
    • setFilters

      @Deprecated public void setFilters(COSBase filters) throws IOException
      Deprecated.
      Sets the filters to be applied when encoding or decoding the stream.
      Parameters:
      filters - The filters to set on this stream.
      Throws:
      IOException - If there is an error clearing the old filters.
    • getString

      @Deprecated public String getString()
      Deprecated.
      Use toTextString() instead.
      Returns the contents of the stream as a text string.
      Returns:
      the string representation of this string.
    • toTextString

      public String toTextString()
      Returns the contents of the stream as a PDF "text string".
      Returns:
      the text string representation of this stream.
    • accept

      public Object accept(ICOSVisitor visitor) throws IOException
      Description copied from class: COSDictionary
      visitor pattern double dispatch method.
      Overrides:
      accept in class COSDictionary
      Parameters:
      visitor - The object to notify when visiting this object.
      Returns:
      The object that the visitor returns.
      Throws:
      IOException - If there is an error visiting this object.
    • close

      public void close() throws IOException
      Called by PDFBox when the PDDocument is closed, this closes the stream and removes the data. You will usually not need this.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException