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
`(package private) static class` `PdfWriter.PdfBody.PdfCrossReference` `PdfCrossReference` is an entry in the PDF Cross-Reference table.

### Field Summary

Fields
`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
`(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`