org.apache.pdfbox.pdmodel.common

## Class PDStream

- java.lang.Object
- - org.apache.pdfbox.pdmodel.common.PDStream

All Implemented Interfaces:
  COSObjectable

Direct Known Subclasses:
  PDEmbeddedFile, PDMetadata, PDObjectStream

    public class PDStream
    extends Object
    implements COSObjectable

A PDStream represents a stream in a PDF document. Streams are tied to a single PDF document.

Author:
  Ben Litchfield

### Constructor Summary

Constructors
Constructor and Description
`PDStream(COSDocument document)` Creates a new empty PDStream object.
`PDStream(COSStream str)` Creates a PDStream which wraps the given COSStream.
`PDStream(PDDocument document)` Creates a new empty PDStream object.
`PDStream(PDDocument doc, InputStream input)` Constructor.
`PDStream(PDDocument doc, InputStream input, COSArray filters)` Constructor.
`PDStream(PDDocument doc, InputStream input, COSName filter)` Constructor.

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`void` `addCompression()` Deprecated. This method is inefficient. To copying an existing InputStream, use `PDStream(PDDocument, InputStream, COSName)` instead, with COSName.FLATE_DECODE as the final argument. Otherwise, to write new compressed data, use `createOutputStream(COSName)`, with COSName.FLATE_DECODE as the argument.
`COSInputStream` `createInputStream()` This will get a stream that can be read from.
`COSInputStream` `createInputStream(DecodeOptions options)`
`InputStream` `createInputStream(List<String> stopFilters)` This will get a stream with some filters applied but not others.
`OutputStream` `createOutputStream()` This will get a stream that can be written to.
`OutputStream` `createOutputStream(COSName filter)` This will get a stream that can be written to, with the given filter.
`COSStream` `getCOSObject()` Get the cos stream associated with this object.
`int` `getDecodedStreamLength()` Get the decoded stream length.
`List<Object>` `getDecodeParms()` Get the list of decode parameters.
`PDFileSpecification` `getFile()` This will get the file specification for this stream.
`List<Object>` `getFileDecodeParams()` Get the list of decode parameters.
`List<String>` `getFileFilters()` This will get the list of filters that are associated with this stream.
`List<COSName>` `getFilters()` This will get the list of filters that are associated with this stream.
`int` `getLength()` This will get the length of the filtered/compressed stream.
`PDMetadata` `getMetadata()` Get the metadata that is part of the document catalog.
`COSStream` `getStream()` Deprecated. use `getCOSObject()`
`void` `setDecodedStreamLength(int decodedStreamLength)` Set the decoded stream length.
`void` `setDecodeParms(List<?> decodeParams)` This will set the list of decode parameters.
`void` `setFile(PDFileSpecification f)` Set the file specification.
`void` `setFileDecodeParams(List<?> decodeParams)` This will set the list of decode params.
`void` `setFileFilters(List<String> filters)` This will set the filters that are part of this stream.
`void` `setFilters(List<COSName> filters)` This will set the filters that are part of this stream.
`void` `setMetadata(PDMetadata meta)` Set the metadata for this object.
`byte[]` `toByteArray()` This will copy the stream into a byte array.

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

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

### Constructor Detail

#### PDStream

    public PDStream(PDDocument document)

Creates a new empty PDStream object.

Parameters:
  `document` - The document that the stream will be part of.

#### PDStream

    public PDStream(COSDocument document)

Creates a new empty PDStream object.

Parameters:
  `document` - The document that the stream will be part of.

#### PDStream

    public PDStream(COSStream str)

Creates a PDStream which wraps the given COSStream.

Parameters:
  `str` - The stream parameter.

#### PDStream

    public PDStream(PDDocument doc,
                    InputStream input)
             throws IOException

Constructor. Reads all data from the input stream and embeds it into the document. This method closes the InputStream.

Parameters:
  `doc` - The document that will hold the stream.
  `input` - The stream parameter.
Throws:
  `IOException` - If there is an error creating the stream in the document.

#### PDStream

    public PDStream(PDDocument doc,
                    InputStream input,
                    COSName filter)
             throws IOException

Constructor. Reads all data from the input stream and embeds it into the document with the given filter applied. This method closes the InputStream.

Parameters:
  `doc` - The document that will hold the stream.
  `input` - The stream parameter.
  `filter` - Filter to apply to the stream.
Throws:
  `IOException` - If there is an error creating the stream in the document.

#### PDStream

    public PDStream(PDDocument doc,
                    InputStream input,
                    COSArray filters)
             throws IOException

Constructor. Reads all data from the input stream and embeds it into the document with the given filters applied. This method closes the InputStream.

Parameters:
  `doc` - The document that will hold the stream.
  `input` - The stream parameter.
  `filters` - Filters to apply to the stream.
Throws:
  `IOException` - If there is an error creating the stream in the document.

### Method Detail

#### addCompression

    @Deprecated
    public void addCompression()

Deprecated. This method is inefficient. To copying an existing InputStream, use `PDStream(PDDocument, InputStream, COSName)` instead, with COSName.FLATE_DECODE as the final argument. Otherwise, to write new compressed data, use `createOutputStream(COSName)`, with COSName.FLATE_DECODE as the argument.
If there are not compression filters on the current stream then this will add a compression filter, flate compression for example.

#### getCOSObject

    public COSStream getCOSObject()

Get the cos stream associated with this object.

Specified by:
  `getCOSObject` in interface `COSObjectable`
Returns:
  The cos object that matches this Java object.

#### createOutputStream

    public OutputStream createOutputStream()
                                    throws IOException

This will get a stream that can be written to.

Returns:
  An output stream to write data to.
Throws:
  `IOException` - If an IO error occurs during writing.

#### createOutputStream

    public OutputStream createOutputStream(COSName filter)
                                    throws IOException

This will get a stream that can be written to, with the given filter.

Parameters:
  `filter` - the filter to be used.
Returns:
  An output stream to write data to.
Throws:
  `IOException` - If an IO error occurs during writing.

#### createInputStream

    public COSInputStream createInputStream()
                                     throws IOException

This will get a stream that can be read from.

Returns:
  An input stream that can be read from.
Throws:
  `IOException` - If an IO error occurs during reading.

#### createInputStream

    public COSInputStream createInputStream(DecodeOptions options)
                                     throws IOException

Throws:
  `IOException`

#### createInputStream

    public InputStream createInputStream(List<String> stopFilters)
                                  throws IOException

This will get a stream with some filters applied but not others. This is useful when doing images, ie filters = [flate,dct], we want to remove flate but leave dct

Parameters:
  `stopFilters` - A list of filters to stop decoding at.
Returns:
  A stream with decoded data.
Throws:
  `IOException` - If there is an error processing the stream.

#### getStream

    @Deprecated
    public COSStream getStream()

Deprecated. use `getCOSObject()`
Get the cos stream associated with this object.

Returns:
  The cos object that matches this Java object.

#### getLength

    public int getLength()

This will get the length of the filtered/compressed stream. This is readonly in the PD Model and will be managed by this class.

Returns:
  The length of the filtered stream.

#### getFilters

    public List<COSName> getFilters()

This will get the list of filters that are associated with this stream. Or null if there are none.

Returns:
  A list of all encoding filters to apply to this stream.

#### setFilters

    public void setFilters(List<COSName> filters)

This will set the filters that are part of this stream.

Parameters:
  `filters` - The filters that are part of this stream.

#### getDecodeParms

    public List<Object> getDecodeParms()
                                throws IOException

Get the list of decode parameters. Each entry in the list will refer to an entry in the filters list.

Returns:
  The list of decode parameters.
Throws:
  `IOException` - if there is an error retrieving the parameters.

#### getFileDecodeParams

    public List<Object> getFileDecodeParams()
                                     throws IOException

Get the list of decode parameters. Each entry in the list will refer to an entry in the filters list.

Returns:
  The list of decode parameters.
Throws:
  `IOException` - if there is an error retrieving the parameters.

#### setDecodeParms

    public void setDecodeParms(List<?> decodeParams)

This will set the list of decode parameters.

Parameters:
  `decodeParams` - The list of decode parameters.

#### getFile

    public PDFileSpecification getFile()
                                throws IOException

This will get the file specification for this stream. This is only required for external files.

Returns:
  The file specification.
Throws:
  `IOException` - If there is an error creating the file spec.

#### setFile

    public void setFile(PDFileSpecification f)

Set the file specification.

Parameters:
  `f` - The file specification.

#### getFileFilters

    public List<String> getFileFilters()

This will get the list of filters that are associated with this stream. Or null if there are none.

Returns:
  A list of all encoding filters to apply to this stream.

#### setFileFilters

    public void setFileFilters(List<String> filters)

This will set the filters that are part of this stream.

Parameters:
  `filters` - The filters that are part of this stream.

#### setFileDecodeParams

    public void setFileDecodeParams(List<?> decodeParams)

This will set the list of decode params.

Parameters:
  `decodeParams` - The list of decode params.

#### toByteArray

    public byte[] toByteArray()
                       throws IOException

This will copy the stream into a byte array.

Returns:
  The byte array of the filteredStream.
Throws:
  `IOException` - if an I/O error occurs.

#### getMetadata

    public PDMetadata getMetadata()

Get the metadata that is part of the document catalog. This will return null if there is no meta data for this object.

Returns:
  The metadata for this object.
Throws:
  `IllegalStateException` - if the value of the metadata entry is different from a stream or null

#### setMetadata

    public void setMetadata(PDMetadata meta)

Set the metadata for this object. This can be null.

Parameters:
  `meta` - The meta data for this object.

#### getDecodedStreamLength

    public int getDecodedStreamLength()

Get the decoded stream length.

Returns:
  the decoded stream length

#### setDecodedStreamLength

    public void setDecodedStreamLength(int decodedStreamLength)

Set the decoded stream length.

Parameters:
  `decodedStreamLength` - the decoded stream length