com.lowagie.text.pdf.codec

## Class Base64.OutputStream

- java.lang.Object
- - java.io.OutputStream
  - - java.io.FilterOutputStream
    - - com.lowagie.text.pdf.codec.Base64.OutputStream

- All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable
  Enclosing class:
    Base64

      public static class Base64.OutputStream
      extends java.io.FilterOutputStream

  A `Base64.OutputStream` will write data to another `java.io.OutputStream`, given in the constructor, and encode/decode to/from Base64 notation on the fly.
  Since:
    1.3
  See Also:
    `Base64`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private byte[]` | `alphabet`
    `private byte[]` | `b4`
    `private boolean` | `breakLines`
    `private byte[]` | `buffer`
    `private int` | `bufferLength`
    `private byte[]` | `decodabet`
    `private boolean` | `encode`
    `private int` | `lineLength`
    `private int` | `options`
    `private int` | `position`
    `private boolean` | `suspendEncoding`

    - ### Fields inherited from class java.io.FilterOutputStream

      `out`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Base64.OutputStream(java.io.OutputStream out)` Constructs a `Base64.OutputStream` in ENCODE mode.
    `Base64.OutputStream(java.io.OutputStream out, int options)` Constructs a `Base64.OutputStream` in either ENCODE or DECODE mode.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Flushes and closes (I think, in the superclass) the stream.
    `void` | `flushBase64()` Method added by PHIL.
    `void` | `resumeEncoding()` Resumes encoding of the stream.
    `void` | `suspendEncoding()` Suspends encoding of the stream.
    `void` | `write(byte[] theBytes, int off, int len)` Calls `write(int)` repeatedly until len bytes are written.
    `void` | `write(int theByte)` Writes the byte to the output stream after converting to/from Base64 notation.

    - ### Methods inherited from class java.io.FilterOutputStream

      `flush, write`

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

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

- - ### Field Detail

    - #### encode

          private boolean encode

    - #### position

          private int position

    - #### buffer

          private byte[] buffer

    - #### bufferLength

          private int bufferLength

    - #### lineLength

          private int lineLength

    - #### breakLines

          private boolean breakLines

    - #### b4

          private byte[] b4

    - #### suspendEncoding

          private boolean suspendEncoding

    - #### options

          private int options

    - #### alphabet

          private byte[] alphabet

    - #### decodabet

          private byte[] decodabet

  - ### Constructor Detail

    - #### Base64.OutputStream

          public Base64.OutputStream(java.io.OutputStream out)

      Constructs a `Base64.OutputStream` in ENCODE mode.
      Parameters:
        `out` - the `java.io.OutputStream` to which data will be written.
      Since:
        1.3

    - #### Base64.OutputStream

          public Base64.OutputStream(java.io.OutputStream out,
                             int options)

      Constructs a `Base64.OutputStream` in either ENCODE or DECODE mode.

      Valid options:

             ENCODE or DECODE: Encode or Decode as data is read.
             DONT_BREAK_LINES: don't break lines at 76 characters
               (only meaningful when encoding)
               Note: Technically, this makes your encoding non-compliant.

      Example: `new Base64.OutputStream( out, Base64.ENCODE )`

      Parameters:
        `out` - the `java.io.OutputStream` to which data will be written.
        `options` - Specified options.
      Since:
        1.3
      See Also:
        `Base64.ENCODE`, `Base64.DECODE`, `Base64.DONT_BREAK_LINES`

  - ### Method Detail

    - #### write

          public void write(int theByte)
                     throws java.io.IOException

      Writes the byte to the output stream after converting to/from Base64 notation. When encoding, bytes are buffered three at a time before the output stream actually gets a write() call. When decoding, bytes are buffered four at a time.
      Overrides:
        `write` in class `java.io.FilterOutputStream`
      Parameters:
        `theByte` - the byte to write
      Throws:
        `java.io.IOException`
      Since:
        1.3

    - #### write

          public void write(byte[] theBytes,
                   int off,
                   int len)
                     throws java.io.IOException

      Calls `write(int)` repeatedly until len bytes are written.
      Overrides:
        `write` in class `java.io.FilterOutputStream`
      Parameters:
        `theBytes` - array from which to read bytes
        `off` - offset for array
        `len` - max number of bytes to read into array
      Throws:
        `java.io.IOException`
      Since:
        1.3

    - #### flushBase64

          public void flushBase64()
                           throws java.io.IOException

      Method added by PHIL. [Thanks, PHIL. -Rob] This pads the buffer without closing the stream.
      Throws:
        `java.io.IOException`

    - #### close

          public void close()
                     throws java.io.IOException

      Flushes and closes (I think, in the superclass) the stream.
      Specified by:
        `close` in interface `java.io.Closeable`
      Overrides:
        `close` in class `java.io.FilterOutputStream`
      Throws:
        `java.io.IOException`
      Since:
        1.3

    - #### suspendEncoding

          public void suspendEncoding()
                               throws java.io.IOException

      Suspends encoding of the stream. May be helpful if you need to embed a piece of base640-encoded data in a stream.
      Throws:
        `java.io.IOException`
      Since:
        1.5.1

    - #### resumeEncoding

          public void resumeEncoding()

      Resumes encoding of the stream. May be helpful if you need to embed a piece of base640-encoded data in a stream.
      Since:
        1.5.1