org.apache.fop.pdf

## Class AbstractPDFStream

- java.lang.Object
- - org.apache.fop.pdf.PDFObject
  - - org.apache.fop.pdf.AbstractPDFStream

- All Implemented Interfaces:
    PDFWritable
  Direct Known Subclasses:
    AbstractPDFFontStream, PDFStream, PDFXObject

      public abstract class AbstractPDFStream
      extends PDFObject

  This is an abstract base class for PDF streams.

- - ### Field Summary

    - ### Fields inherited from class org.apache.fop.pdf.PDFObject

      `log`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractPDFStream()`
    `protected` | `AbstractPDFStream(boolean encodeOnTheFly)`
    `protected` | `AbstractPDFStream(PDFDictionary dictionary)`
    `protected` | `AbstractPDFStream(PDFDictionary dictionary, boolean encodeOnTheFly)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | `encodeAndWriteStream(java.io.OutputStream out, PDFNumber refLength)` Encodes and writes a stream directly to an OutputStream.
    `protected StreamCache` | `encodeStream()` Encodes the raw data stream for output to a PDF file.
    `java.lang.Object` | `get(java.lang.String key)`
    `void` | `getChildren(java.util.Set<PDFObject> children)`
    `protected java.lang.String` | `getDefaultFilterName()` Returns the name of a suitable filter for this PDF object.
    `protected PDFDictionary` | `getDictionary()`
    `PDFFilterList` | `getFilterList()` Returns the associated filter list.
    `protected abstract int` | `getSizeHint()` Returns a value that hints at the size of the encoded stream.
    `protected boolean` | `multipleFiltersAllowed()` Whether multiple filters can be applied.
    `int` | `output(java.io.OutputStream stream)` Overload the base object method so we don't have to copy byte arrays around so much Write the PDF represention of this object
    `protected abstract void` | `outputRawStreamData(java.io.OutputStream out)` Sends the raw stream data to the target OutputStream.
    `protected int` | `outputStreamData(StreamCache encodedStream, java.io.OutputStream out)` Output just the stream data enclosed by stream/endstream markers
    `protected void` | `populateStreamDict(java.lang.Object lengthEntry)` Populates the dictionary with all necessary entries for the stream.
    `protected void` | `prepareImplicitFilters()` Prepares implicit filters (such as the DCTFilter for JPEG images).
    `void` | `put(java.lang.String key, java.lang.Object value)` Puts the given object in the dictionary associated to this stream.
    `void` | `registerChildren()`
    `void` | `setDocument(PDFDocument doc)` Sets the parent PDFDocument.
    `protected void` | `setupFilterList()` Sets up the default filters for this stream if they haven't been set from outside.

    - ### Methods inherited from class org.apache.fop.pdf.PDFObject

      `contentEquals, encode, encodeBinaryToHexString, encodeString, encodeText, formatObject, getDocument, getDocumentSafely, getGeneration, getObjectID, getObjectNumber, getParent, hasObjectNumber, makeReference, outputInline, referencePDF, setObjectNumber, setObjectNumber, setObjectNumber, setParent, toPDF, toPDFString`

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

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

- - ### Constructor Detail

    - #### AbstractPDFStream

          protected AbstractPDFStream()

    - #### AbstractPDFStream

          protected AbstractPDFStream(PDFDictionary dictionary)

    - #### AbstractPDFStream

          protected AbstractPDFStream(boolean encodeOnTheFly)

    - #### AbstractPDFStream

          protected AbstractPDFStream(PDFDictionary dictionary,
                                      boolean encodeOnTheFly)

  - ### Method Detail

    - #### getDictionary

          protected final PDFDictionary getDictionary()

    - #### get

          public java.lang.Object get(java.lang.String key)

    - #### put

          public void put(java.lang.String key,
                          java.lang.Object value)

      Puts the given object in the dictionary associated to this stream.
      Parameters:
        `key` - the key in the dictionary
        `value` - the value to store

    - #### setupFilterList

          protected void setupFilterList()

      Sets up the default filters for this stream if they haven't been set from outside.

    - #### getDefaultFilterName

          protected java.lang.String getDefaultFilterName()

      Returns the name of a suitable filter for this PDF object.
      Returns:
        the default filter
      See Also:
        `PDFFilterList`

    - #### getFilterList

          public PDFFilterList getFilterList()

      Returns the associated filter list.
      Returns:
        the filter list

    - #### getSizeHint

          protected abstract int getSizeHint()
                                      throws java.io.IOException

      Returns a value that hints at the size of the encoded stream. This is used to optimize buffer allocation so fewer buffer reallocations are necessary.
      Returns:
        an estimated size (0 if no hint can be given)
      Throws:
        `java.io.IOException` - in case of an I/O problem

    - #### outputRawStreamData

          protected abstract void outputRawStreamData(java.io.OutputStream out)
                                               throws java.io.IOException

      Sends the raw stream data to the target OutputStream.
      Parameters:
        `out` - OutputStream to write to
      Throws:
        `java.io.IOException` - In case of an I/O problem

    - #### outputStreamData

          protected int outputStreamData(StreamCache encodedStream,
                                         java.io.OutputStream out)
                                  throws java.io.IOException

      Output just the stream data enclosed by stream/endstream markers
      Parameters:
        `encodedStream` - already encoded/filtered stream to write
        `out` - OutputStream to write to
      Returns:
        int number of bytes written
      Throws:
        `java.io.IOException` - in case of an I/O problem

    - #### encodeStream

          protected StreamCache encodeStream()
                                      throws java.io.IOException

      Encodes the raw data stream for output to a PDF file.
      Returns:
        the encoded stream
      Throws:
        `java.io.IOException` - in case of an I/O problem

    - #### encodeAndWriteStream

          protected int encodeAndWriteStream(java.io.OutputStream out,
                                             PDFNumber refLength)
                                      throws java.io.IOException

      Encodes and writes a stream directly to an OutputStream. The length of the stream, in this case, is set on a PDFNumber object that has to be prepared beforehand.
      Parameters:
        `out` - OutputStream to write to
        `refLength` - PDFNumber object to receive the stream length
      Returns:
        number of bytes written (header and trailer included)
      Throws:
        `java.io.IOException` - in case of an I/O problem

    - #### output

          public int output(java.io.OutputStream stream)
                     throws java.io.IOException

      Overload the base object method so we don't have to copy byte arrays around so much Write the PDF represention of this object
      Overrides:
        `output` in class `PDFObject`
      Parameters:
        `stream` - the stream to write the PDF to
      Returns:
        the number of bytes written
      Throws:
        `java.io.IOException` - if there is an error writing to the stream

    - #### setDocument

          public void setDocument(PDFDocument doc)

      Description copied from class: `PDFObject`
      Sets the parent PDFDocument.
      Overrides:
        `setDocument` in class `PDFObject`
      Parameters:
        `doc` - the PDFDocument.

    - #### populateStreamDict

          protected void populateStreamDict(java.lang.Object lengthEntry)

      Populates the dictionary with all necessary entries for the stream. Override this method if you need additional entries.
      Parameters:
        `lengthEntry` - value for the /Length entry

    - #### prepareImplicitFilters

          protected void prepareImplicitFilters()

      Prepares implicit filters (such as the DCTFilter for JPEG images). You must make sure that the appropriate filters are in the filter list at the right places.

    - #### multipleFiltersAllowed

          protected boolean multipleFiltersAllowed()

      Whether multiple filters can be applied.
      Returns:
        true if multiple filters allowed

    - #### getChildren

          public void getChildren(java.util.Set<PDFObject> children)

      Overrides:
        `getChildren` in class `PDFObject`

    - #### registerChildren

          public void registerChildren()

Copyright 1999-2020 The Apache Software Foundation. All Rights Reserved.