## 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, 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.3' section 4.8 (page 41-53).

See Also:
  `PdfObject`, `PdfDictionary`

Field Summary
`protected boolean` `compressed` is the stream compressed?
`(package private) static byte[]` `ENDSTREAM`
`protected java.io.InputStream` `inputStream`
`protected int` `inputStreamLength`
`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
`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
`void` `flateCompress()` 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)` Returns the PDF 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, getKeys, isCatalog, isDictionaryType, isFont, isOutlineTree, isPage, isPages, merge, mergeDifferent, put, putAll, putEx, remove, size, toString`

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

### compressed

    protected boolean compressed

  is the stream compressed?

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

### 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`
  Returns the PDF representation of this `PdfDictionary`.

  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