com.lowagie.text.pdf

## Class PdfStream

- java.lang.Object
- - com.lowagie.text.pdf.PdfObject
  - - com.lowagie.text.pdf.PdfDictionary
    - - com.lowagie.text.pdf.PdfStream

Direct Known Subclasses:
  BaseFont.StreamFont, PdfContents, PdfEFStream, PdfFormXObject, PdfICCBased, PdfImage, PdfPattern, PRStream

    public class PdfStream
    extends PdfDictionary

`PdfStream` is the Pdf stream object.

A stream, like a string, is a sequence of characters. However, an application can read a small portion of a stream at a time, while a string must be read in its entirety. For this reason, objects with potentially large amounts of data, such as images and page descriptions, are represented as streams.
A stream consists of a dictionary that describes a sequence of characters, followed by the keyword stream, followed by zero or more lines of characters, followed by the keyword endstream.
All streams must be `PdfIndirectObject`s. The stream dictionary must be a direct object. The keyword stream that follows the stream dictionary should be followed by a carriage return and linefeed or just a linefeed.
Remark: In this version only the FLATEDECODE-filter is supported.
This object is described in the 'Portable Document Format Reference Manual version 1.7' section 3.2.7 (page 60-63).

See Also:
  `PdfObject`, `PdfDictionary`

### Field Summary

Fields
`static int` `BEST_COMPRESSION` A possible compression level.
`static int` `BEST_SPEED` A possible compression level.
`protected boolean` `compressed` is the stream compressed?
`protected int` `compressionLevel` The level of compression.
`static int` `DEFAULT_COMPRESSION` A possible compression level.
`(package private) static byte[]` `ENDSTREAM`
`protected java.io.InputStream` `inputStream`
`protected int` `inputStreamLength`
`static int` `NO_COMPRESSION` A possible compression level.
`protected int` `rawLength`
`protected PdfIndirectReference` `ref`
`(package private) static int` `SIZESTREAM`
`(package private) static byte[]` `STARTSTREAM`
`protected java.io.ByteArrayOutputStream` `streamBytes`
`protected PdfWriter` `writer`

### Fields inherited from class com.lowagie.text.pdf.PdfDictionary

`CATALOG, FONT, hashMap, OUTLINES, PAGE, PAGES`

### Fields inherited from class com.lowagie.text.pdf.PdfObject

`ARRAY, BOOLEAN, bytes, DICTIONARY, INDIRECT, indRef, NAME, NOTHING, NULL, NUMBER, STREAM, STRING, TEXT_PDFDOCENCODING, TEXT_UNICODE, type`

### Constructor Summary

Constructors
`protected` `PdfStream()` Constructs a `PdfStream`-object.
`` `PdfStream(byte[] bytes)` Constructs a `PdfStream`-object.
`` `PdfStream(java.io.InputStream inputStream, PdfWriter writer)` Creates an efficient stream.

### Method Summary

Methods
`void` `flateCompress()` Compresses the stream.
`void` `flateCompress(int compressionLevel)` Compresses the stream.
`int` `getRawLength()` Gets the raw length of the stream.
`protected void` `superToPdf(PdfWriter writer, java.io.OutputStream os)`
`void` `toPdf(PdfWriter writer, java.io.OutputStream os)` Writes the PDF representation of this `PdfDictionary` as an array of `byte` to the given `OutputStream`.
`java.lang.String` `toString()` Returns a string representation of this `PdfDictionary`.
`void` `writeContent(java.io.OutputStream os)` Writes the data content to an `OutputStream`.
`void` `writeLength()` Writes the stream length to the `PdfWriter`.

### Methods inherited from class com.lowagie.text.pdf.PdfDictionary

`contains, get, getAsArray, getAsBoolean, getAsDict, getAsIndirectObject, getAsName, getAsNumber, getAsStream, getAsString, getDirectObject, getKeys, isCatalog, isFont, isOutlineTree, isPage, isPages, merge, mergeDifferent, put, putAll, putEx, remove, size`

### Methods inherited from class com.lowagie.text.pdf.PdfObject

`canBeInObjStm, getBytes, getIndRef, isArray, isBoolean, isDictionary, isIndirect, isName, isNull, isNumber, isStream, isString, length, setContent, setIndRef, type`

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

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

### Field Detail

#### DEFAULT_COMPRESSION

    public static final int DEFAULT_COMPRESSION

A possible compression level.

Since:
  2.1.3
See Also:
  Constant Field Values

#### NO_COMPRESSION

    public static final int NO_COMPRESSION

A possible compression level.

Since:
  2.1.3
See Also:
  Constant Field Values

#### BEST_SPEED

    public static final int BEST_SPEED

A possible compression level.

Since:
  2.1.3
See Also:
  Constant Field Values

#### BEST_COMPRESSION

    public static final int BEST_COMPRESSION

A possible compression level.

Since:
  2.1.3
See Also:
  Constant Field Values

#### compressed

    protected boolean compressed

is the stream compressed?

#### compressionLevel

    protected int compressionLevel

The level of compression.

Since:
  2.1.3

#### streamBytes

    protected java.io.ByteArrayOutputStream streamBytes

#### inputStream

    protected java.io.InputStream inputStream

#### ref

    protected PdfIndirectReference ref

#### inputStreamLength

    protected int inputStreamLength

#### writer

    protected PdfWriter writer

#### rawLength

    protected int rawLength

#### STARTSTREAM

    static final byte[] STARTSTREAM

#### ENDSTREAM

    static final byte[] ENDSTREAM

#### SIZESTREAM

    static final int SIZESTREAM

### Constructor Detail

#### PdfStream

    public PdfStream(byte[] bytes)

Constructs a `PdfStream`-object.

Parameters:
  `bytes` - content of the new `PdfObject` as an array of `byte`.

#### PdfStream

    public PdfStream(java.io.InputStream inputStream,
             PdfWriter writer)

Creates an efficient stream. No temporary array is ever created. The `InputStream` is totally consumed but is not closed. The general usage is:

     InputStream in = ...;
     PdfStream stream = new PdfStream(in, writer);
     stream.flateCompress();
     writer.addToBody(stream);
     stream.writeLength();
     in.close();

Parameters:
  `inputStream` - the data to write to this stream
  `writer` - the `PdfWriter` for this stream

#### PdfStream

    protected PdfStream()

Constructs a `PdfStream`-object.

### Method Detail

#### writeLength

    public void writeLength()
                     throws java.io.IOException

Writes the stream length to the `PdfWriter`.

This method must be called and can only be called if the constructor `PdfStream(InputStream,PdfWriter)` is used to create the stream.

Throws:
  `java.io.IOException` - on error
See Also:
  `PdfStream(InputStream,PdfWriter)`

#### getRawLength

    public int getRawLength()

Gets the raw length of the stream.

Returns:
  the raw length of the stream

#### flateCompress

    public void flateCompress()

Compresses the stream.

#### flateCompress

    public void flateCompress(int compressionLevel)

Compresses the stream.

Parameters:
  `compressionLevel` - the compression level (0 = best speed, 9 = best compression, -1 is default)
Since:
  2.1.3

#### superToPdf

    protected void superToPdf(PdfWriter writer,
                  java.io.OutputStream os)
                       throws java.io.IOException

Throws:
  `java.io.IOException`

#### toPdf

    public void toPdf(PdfWriter writer,
             java.io.OutputStream os)
               throws java.io.IOException

Description copied from class: `PdfDictionary`
Writes the PDF representation of this `PdfDictionary` as an array of `byte` to the given `OutputStream`.

Overrides:
  `toPdf` in class `PdfDictionary`
Parameters:
  `writer` - for backwards compatibility
  `os` - the `OutputStream` to write the bytes to.
Throws:
  `java.io.IOException`
See Also:
  `PdfDictionary.toPdf(com.lowagie.text.pdf.PdfWriter, java.io.OutputStream)`

#### writeContent

    public void writeContent(java.io.OutputStream os)
                      throws java.io.IOException

Writes the data content to an `OutputStream`.

Parameters:
  `os` - the destination to write to
Throws:
  `java.io.IOException` - on error

#### toString

    public java.lang.String toString()

Description copied from class: `PdfDictionary`
Returns a string representation of this `PdfDictionary`. The string doesn't contain any of the content of this dictionary. Rather the string "dictionary" is returned, possibly followed by the type of this `PdfDictionary`, if set.

Overrides:
  `toString` in class `PdfDictionary`
Returns:
  the string representation of this `PdfDictionary`
See Also:
  `PdfObject.toString()`