com.lowagie.text.pdf

## Class PdfWriter.PdfBody

- java.lang.Object
- - com.lowagie.text.pdf.PdfWriter.PdfBody

- Enclosing class:
    PdfWriter

      public static class PdfWriter.PdfBody
      extends java.lang.Object

  This class generates the structure of a PDF document.

  This class covers the third section of Chapter 5 in the 'Portable Document Format Reference Manual version 1.3' (page 55-60). It contains the body of a PDF document (section 5.14) and it can also generate a Cross-reference Table (section 5.15).

  See Also:
    `PdfWriter`, `PdfObject`, `PdfIndirectObject`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `(package private) static class` | `PdfWriter.PdfBody.PdfCrossReference` `PdfCrossReference` is an entry in the PDF Cross-Reference table.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private int` | `currentObjNum`
    `private ByteBuffer` | `index`
    `private int` | `numObj`
    `private static int` | `OBJSINSTREAM`
    `private int` | `position` the current byte position in the body.
    `private int` | `refnum`
    `private ByteBuffer` | `streamObjects`
    `private PdfWriter` | `writer`
    `private java.util.TreeSet` | `xrefs` array containing the cross-reference table of the normal objects.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PdfWriter.PdfBody(PdfWriter writer)` Constructs a new `PdfBody`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `(package private) PdfIndirectObject` | `add(PdfObject object)` Adds a `PdfObject` to the body.
    `(package private) PdfIndirectObject` | `add(PdfObject object, boolean inObjStm)`
    `(package private) PdfIndirectObject` | `add(PdfObject object, int refNumber)`
    `(package private) PdfIndirectObject` | `add(PdfObject object, int refNumber, boolean inObjStm)`
    `(package private) PdfIndirectObject` | `add(PdfObject object, PdfIndirectReference ref)` Adds a `PdfObject` to the body given an already existing PdfIndirectReference.
    `(package private) PdfIndirectObject` | `add(PdfObject object, PdfIndirectReference ref, boolean inObjStm)`
    `private PdfWriter.PdfBody.PdfCrossReference` | `addToObjStm(PdfObject obj, int nObj)`
    `private void` | `flushObjStm()`
    `(package private) int` | `getIndirectReferenceNumber()`
    `(package private) PdfIndirectReference` | `getPdfIndirectReference()` Gets a PdfIndirectReference for an object that will be created in the future.
    `(package private) int` | `offset()` Returns the offset of the Cross-Reference table.
    `(package private) void` | `setRefnum(int refnum)`
    `(package private) int` | `size()` Returns the total number of objects contained in the CrossReferenceTable of this `Body`.
    `(package private) void` | `writeCrossReferenceTable(java.io.OutputStream os, PdfIndirectReference root, PdfIndirectReference info, PdfIndirectReference encryption, PdfObject fileID, int prevxref)` Returns the CrossReferenceTable of the `Body`.

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

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

- - ### Field Detail

    - #### OBJSINSTREAM

          private static final int OBJSINSTREAM

      See Also:
        Constant Field Values

    - #### xrefs

          private java.util.TreeSet xrefs

      array containing the cross-reference table of the normal objects.

    - #### refnum

          private int refnum

    - #### position

          private int position

      the current byte position in the body.

    - #### writer

          private PdfWriter writer

    - #### index

          private ByteBuffer index

    - #### streamObjects

          private ByteBuffer streamObjects

    - #### currentObjNum

          private int currentObjNum

    - #### numObj

          private int numObj

  - ### Constructor Detail

    - #### PdfWriter.PdfBody

          PdfWriter.PdfBody(PdfWriter writer)

      Constructs a new `PdfBody`.
      Parameters:
        `writer` -

  - ### Method Detail

    - #### setRefnum

          void setRefnum(int refnum)

    - #### addToObjStm

          private PdfWriter.PdfBody.PdfCrossReference addToObjStm(PdfObject obj,
                                                        int nObj)
                                                           throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### flushObjStm

          private void flushObjStm()
                            throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### add

          PdfIndirectObject add(PdfObject object)
                          throws java.io.IOException

      Adds a `PdfObject` to the body.

      This methods creates a `PdfIndirectObject` with a certain number, containing the given `PdfObject`. It also adds a `PdfCrossReference` for this object to an `ArrayList` that will be used to build the Cross-reference Table.

      Parameters:
        `object` - a `PdfObject`
      Returns:
        a `PdfIndirectObject`
      Throws:
        `java.io.IOException`

    - #### add

          PdfIndirectObject add(PdfObject object,
                              boolean inObjStm)
                          throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getPdfIndirectReference

          PdfIndirectReference getPdfIndirectReference()

      Gets a PdfIndirectReference for an object that will be created in the future.
      Returns:
        a PdfIndirectReference

    - #### getIndirectReferenceNumber

          int getIndirectReferenceNumber()

    - #### add

          PdfIndirectObject add(PdfObject object,
                              PdfIndirectReference ref)
                          throws java.io.IOException

      Adds a `PdfObject` to the body given an already existing PdfIndirectReference.

      This methods creates a `PdfIndirectObject` with the number given by `ref`, containing the given `PdfObject`. It also adds a `PdfCrossReference` for this object to an `ArrayList` that will be used to build the Cross-reference Table.

      Parameters:
        `object` - a `PdfObject`
        `ref` - a `PdfIndirectReference`
      Returns:
        a `PdfIndirectObject`
      Throws:
        `java.io.IOException`

    - #### add

          PdfIndirectObject add(PdfObject object,
                              PdfIndirectReference ref,
                              boolean inObjStm)
                          throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### add

          PdfIndirectObject add(PdfObject object,
                              int refNumber)
                          throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### add

          PdfIndirectObject add(PdfObject object,
                              int refNumber,
                              boolean inObjStm)
                          throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### offset

          int offset()

      Returns the offset of the Cross-Reference table.
      Returns:
        an offset

    - #### size

          int size()

      Returns the total number of objects contained in the CrossReferenceTable of this `Body`.
      Returns:
        a number of objects

    - #### writeCrossReferenceTable

          void writeCrossReferenceTable(java.io.OutputStream os,
                                      PdfIndirectReference root,
                                      PdfIndirectReference info,
                                      PdfIndirectReference encryption,
                                      PdfObject fileID,
                                      int prevxref)
                                  throws java.io.IOException

      Returns the CrossReferenceTable of the `Body`.
      Parameters:
        `os` -
        `root` -
        `info` -
        `encryption` -
        `fileID` -
        `prevxref` -
      Throws:
        `java.io.IOException`