org.apache.pdfbox.cos

## Class COSStream

- java.lang.Object
- - org.apache.pdfbox.cos.COSBase
  - - org.apache.pdfbox.cos.COSDictionary
    - - org.apache.pdfbox.cos.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.

Author:
  Ben Litchfield

### Field Summary

### Fields inherited from class org.apache.pdfbox.cos.COSDictionary

`items`

### Constructor Summary

Constructors
Constructor and Description
`COSStream()` Creates a new stream with an empty dictionary.
`COSStream(org.apache.pdfbox.io.RandomAccessStreamCache streamCache)` Creates a new stream with an empty dictionary.
`COSStream(org.apache.pdfbox.io.RandomAccessStreamCache streamCache, org.apache.pdfbox.io.RandomAccessReadView randomAccessReadView)` Creates a new stream with an empty dictionary.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `accept(ICOSVisitor visitor)` visitor pattern double dispatch method.
`void` `close()` Called by PDFBox when the PDDocument is closed, this closes the stream and removes the data.
`COSInputStream` `createInputStream()` Returns a new InputStream which reads the decoded stream data.
`COSInputStream` `createInputStream(DecodeOptions options)`
`OutputStream` `createOutputStream()` Returns a new OutputStream for writing stream data, using the current filters.
`OutputStream` `createOutputStream(COSBase filters)` Returns a new OutputStream for writing stream data, using and the given filters.
`InputStream` `createRawInputStream()` Returns a new InputStream which reads the encoded PDF stream data.
`OutputStream` `createRawOutputStream()` Returns a new OutputStream for writing encoded PDF data.
`org.apache.pdfbox.io.RandomAccessRead` `createView()` Returns a new RandomAccessRead which reads the decoded stream data.
`COSBase` `getFilters()` This will return the filters to apply to the byte stream.
`long` `getLength()` Returns the length of the encoded stream.
`boolean` `hasData()` Indicates whether the stream contains any data or not.
`String` `toTextString()` Returns the contents of the stream as a PDF "text string".

### Methods inherited from class org.apache.pdfbox.cos.COSDictionary

`addAll, asUnmodifiableDictionary, clear, containsKey, containsKey, containsValue, entrySet, forEach, getBoolean, getBoolean, getBoolean, getCOSArray, getCOSDictionary, getCOSDictionary, getCOSName, getCOSName, getCOSObject, getCOSStream, getDate, getDate, getDate, getDate, getDictionaryObject, getDictionaryObject, getDictionaryObject, getEmbeddedDate, getEmbeddedDate, getEmbeddedInt, getEmbeddedInt, getEmbeddedString, getEmbeddedString, getFlag, getFloat, getFloat, getFloat, getFloat, getIndirectObjectKeys, getIndirectObjectKeys, getInt, getInt, getInt, getInt, getInt, getInt, getItem, getItem, getItem, getKeyForValue, getLong, getLong, getLong, getLong, getNameAsString, getNameAsString, getNameAsString, getNameAsString, getObjectFromPath, getString, getString, getString, getString, getUpdateState, getValues, keySet, removeItem, resetImportedObjectKeys, resetObjectKeys, setBoolean, setBoolean, setDate, setDate, setEmbeddedDate, setEmbeddedInt, setEmbeddedString, setFlag, setFloat, setFloat, setInt, setInt, setItem, setItem, setItem, setItem, setLong, setLong, setName, setName, setString, setString, size, toString`

### Methods inherited from class org.apache.pdfbox.cos.COSBase

`getCOSObject, getKey, isDirect, setDirect, setKey`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.apache.pdfbox.cos.COSUpdateInfo

`isNeedToBeUpdated, setNeedToBeUpdated, toIncrement`

### Methods inherited from interface org.apache.pdfbox.pdmodel.common.COSObjectable

`getCOSObject`

### Constructor Detail

#### 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(org.apache.pdfbox.io.RandomAccessStreamCache streamCache)

Creates a new stream with an empty dictionary. Data is stored in the given scratch file.

Parameters:
  `streamCache` - Stream cache for writing stream data.

#### COSStream

    public COSStream(org.apache.pdfbox.io.RandomAccessStreamCache streamCache,
                     org.apache.pdfbox.io.RandomAccessReadView randomAccessReadView)
              throws IOException

Creates a new stream with an empty dictionary. Data is read from the given random accessview. Written data is stored in the given scratch file.

Parameters:
  `streamCache` - Stream cache for writing stream data.
  `randomAccessReadView` - source for the data to be read
Throws:
  `IOException` - if the length of the random access view isn't available

### Method Detail

#### 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.

#### 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`

#### createView

    public org.apache.pdfbox.io.RandomAccessRead createView()
                                                     throws IOException

Returns a new RandomAccessRead which reads the decoded stream data.

Returns:
  RandomAccessRead containing decoded stream data.
Throws:
  `IOException` - If the stream could not be read.

#### 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.

#### 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.

#### 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

#### toTextString

    public String toTextString()

Returns the contents of the stream as a PDF "text string".

Returns:
  the PDF string representation of the stream content

#### accept

    public void 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.
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 `Closeable`
Specified by:
  `close` in interface `AutoCloseable`
Throws:
  `IOException` - if something went wrong when closing the stream

#### hasData

    public boolean hasData()

Indicates whether the stream contains any data or not.

Returns:
  true if the stream contains any data