Class PdfStream

  • All Implemented Interfaces:
    java.io.Serializable
    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 PdfIndirectObjects. 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, Serialized Form
    • 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
      • inputStreamLength

        protected int inputStreamLength
      • 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
      • 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()