com.lowagie.text.pdf

## Class PdfDocument

- java.lang.Object
- - com.lowagie.text.Document
  - - com.lowagie.text.pdf.PdfDocument

All Implemented Interfaces:
  DocListener, ElementListener, java.util.EventListener

    public class PdfDocument
    extends Document

`PdfDocument` is the class that is used by `PdfWriter` to translate a `Document` into a PDF with different pages.

A `PdfDocument` always listens to a `Document` and adds the Pdf representation of every `Element` that is added to the `Document`.

Since:
  2.0.8 (class was package-private before)
See Also:
  `Document`, `DocListener`, `PdfWriter`

### Nested Class Summary

Nested Classes
`static class` `PdfDocument.Indentation`
`(package private) static class` `PdfDocument.PdfCatalog` `PdfCatalog` is the PDF Catalog-object.
`static class` `PdfDocument.PdfInfo` `PdfInfo` is the PDF InfoDictionary.
`protected static class` `PdfDocument.RenderingContext` This is a helper class for adding a Table to a document.

### Field Summary

Fields
`protected PdfDictionary` `additionalActions`
`protected int` `alignment` This represents the current alignment of the PDF Elements.
`protected PdfAction` `anchorAction` The current active `PdfAction` when processing an `Anchor`.
`(package private) PdfAnnotationsImp` `annotationsImp`
`protected java.util.HashMap` `boxSize` This is the size of the several boxes that will be used in the next page.
`protected PdfCollection` `collection`
`protected float` `currentHeight` This is the current height of the document.
`protected PdfOutline` `currentOutline` This is the current `PdfOutline` in the hierarchy of outlines.
`protected java.util.HashMap` `documentFileAttachment`
`protected java.util.HashMap` `documentLevelJS`
`protected int` `duration` The duration of the page
`protected boolean` `firstPageEvent` Signals that OnOpenDocument should be called.
`protected PdfContentByte` `graphics` This is the PdfContentByte object, containing the borders and other Graphics.
`(package private) static java.lang.String` `hangingPunctuation` The characters to be applied the hanging punctuation.
`protected float` `imageEnd` This is the position where the image ends.
`protected Image` `imageWait` This is the image that could not be shown on a previous page.
`protected PdfDocument.Indentation` `indentation`
`protected PdfDocument.PdfInfo` `info` some meta information about the Document.
`protected boolean` `isSectionTitle` Signals that onParagraph is valid (to avoid that a Chapter/Section title is treated as a Paragraph).
`(package private) int` `jsCounter` Stores a list of document level JavaScript actions.
`protected int` `lastElementType` Holds the type of the last element, that has been added to the document.
`protected float` `leading` This represents the leading of the lines.
`protected int` `leadingCount` Signals that the current leading has to be subtracted from a YMark object when positive.
`protected PdfLine` `line` The line that is currently being written.
`protected java.util.ArrayList` `lines` The lines that are written until now.
`protected java.util.TreeMap` `localDestinations` Stores the destinations keyed by name.
`protected int` `markPoint`
`protected float` `nextMarginBottom` margin in y direction starting from the bottom.
`protected float` `nextMarginLeft` margin in x direction starting from the left.
`protected float` `nextMarginRight` margin in x direction starting from the right.
`protected float` `nextMarginTop` margin in y direction starting from the top.
`protected Rectangle` `nextPageSize` This is the size of the next page.
`protected PdfAction` `openActionAction`
`protected java.lang.String` `openActionName`
`protected PdfDictionary` `pageAA`
`private boolean` `pageEmpty` This checks if the page is empty.
`protected PdfPageLabels` `pageLabels`
`protected PageResources` `pageResources` This are the page resources of the current Page.
`protected PdfOutline` `rootOutline` This is the root outline of the document.
`protected static java.text.DecimalFormat` `SIXTEEN_DIGITS`
`protected boolean` `strictImageSequence` Holds value of property strictImageSequence.
`protected PdfContentByte` `text` This is the PdfContentByte object, containing the text.
`protected int` `textEmptySize`
`protected java.util.HashMap` `thisBoxSize` This is the size of the several boxes of the current Page.
`protected PdfIndirectReference` `thumb`
`protected PdfTransition` `transition` The page transition
`protected PdfViewerPreferencesImp` `viewerPreferences` Contains the Viewer preferences of this PDF document.
`protected PdfWriter` `writer` The `PdfWriter`.
`protected byte[]` `xmpMetadata` XMP Metadata for the page.

### Fields inherited from class com.lowagie.text.Document

`chapternumber, close, compress, footer, header, htmlStyleClass, javaScript_onLoad, javaScript_onUnLoad, marginBottom, marginLeft, marginMirroring, marginMirroringTopBottom, marginRight, marginTop, open, pageN, pageSize, plainRandomAccess, wmfFontCorrection`

### Constructor Summary

Constructors
Constructor and Description
`PdfDocument()` Constructs a new PDF document.

### Method Summary

Methods
`boolean` `add(Element element)` Signals that an `Element` was added to the `Document`.
`protected void` `add(Image image)` Adds an image to the document.
`(package private) void` `addAdditionalAction(PdfName actionType, PdfAction action)`
`(package private) void` `addAnnotation(PdfAnnotation annot)`
`(package private) void` `addCalculationOrder(PdfFormField formField)`
`(package private) void` `addFileAttachment(java.lang.String description, PdfFileSpecification fs)`
`(package private) void` `addJavaScript(PdfAction js)`
`(package private) void` `addJavaScript(java.lang.String name, PdfAction js)`
`(package private) void` `addOutline(PdfOutline outline, java.lang.String name)` Adds a named outline to the document .
`private void` `addPdfTable(Table t)` Adds a new table to the document.
`(package private) void` `addPTable(PdfPTable ptable)` Adds a `PdfPTable` to the document.
`protected void` `addSpacing(float extraspace, float oldleading, Font f)` Adds extra space.
`(package private) void` `addViewerPreference(PdfName key, PdfObject value)`
`void` `addWriter(PdfWriter writer)` Adds a `PdfWriter` to the `PdfDocument`.
`protected void` `analyzeRow(java.util.ArrayList rows, PdfDocument.RenderingContext ctx)`
`(package private) float` `bottom(Table table)` Returns the bottomvalue of a `Table` if it were added to this document.
`(package private) void` `calculateOutlineCount()` Updates the count in the outlines.
`protected void` `carriageReturn()` If the current line is not empty or null, it is added to the arraylist of lines and a new empty line is added.
`void` `clearTextWrap()` Method added by Pelikan Stephan
`void` `close()` Closes the document.
`protected void` `consumeRowspan(java.util.ArrayList row, PdfDocument.RenderingContext ctx)`
`protected void` `doFooter()`
`protected void` `doHeader()`
`protected void` `ensureNewLine()` Ensures that a new line has been started.
`protected java.util.ArrayList` `extractRows(java.util.ArrayList cells, PdfDocument.RenderingContext ctx)`
`(package private) boolean` `fitsPage(PdfPTable table, float margin)` Checks if a `PdfPTable` fits the current page of the `PdfDocument`.
`protected float` `flushLines()` Writes all the lines to the text-object.
`(package private) PdfAcroForm` `getAcroForm()` Gets the AcroForm object.
`(package private) Rectangle` `getBoxSize(java.lang.String boxName)` Gives the size of a trim, art, crop or bleed box, or null if not defined.
`(package private) PdfDocument.PdfCatalog` `getCatalog(PdfIndirectReference pages)` Gets the `PdfCatalog`-object.
`(package private) java.util.HashMap` `getDocumentFileAttachment()`
`(package private) java.util.HashMap` `getDocumentLevelJS()`
`(package private) PdfDocument.PdfInfo` `getInfo()` Gets the `PdfInfo`-object.
`float` `getLeading()` Getter for the current leading.
`(package private) PdfAction` `getLocalGotoAction(java.lang.String name)`
`(package private) int` `getMarkPoint()`
`(package private) PageResources` `getPageResources()`
`PdfOutline` `getRootOutline()` Gets the root outline.
`float` `getVerticalPosition(boolean ensureNewLine)` Gets the current vertical page position.
`(package private) void` `incMarkPoint()`
`(package private) float` `indentBottom()` Gets the indentation on the bottom side.
`protected float` `indentLeft()` Gets the indentation on the left side.
`protected float` `indentRight()` Gets the indentation on the right side.
`protected float` `indentTop()` Gets the indentation on the top side.
`protected void` `initPage()` Initializes a page.
`(package private) boolean` `isPageEmpty()`
`(package private) boolean` `isStrictImageSequence()` Getter for property strictImageSequence.
`(package private) boolean` `localDestination(java.lang.String name, PdfDestination destination)` The local destination to where a local goto with the same name will jump to.
`(package private) void` `localGoto(java.lang.String name, float llx, float lly, float urx, float ury)` Implements a link to other part of the document.
`protected boolean` `mayBeRemoved(java.util.ArrayList row)`
`protected void` `newLine()` Adds the current line to the list of lines and also adds an empty line.
`boolean` `newPage()` Makes a new page and sends it to the `PdfWriter`.
`void` `open()` Opens the document.
`(package private) void` `outlineTree(PdfOutline outline)` Recursive method used to write outlines.
`(package private) void` `remoteGoto(java.lang.String filename, int page, float llx, float lly, float urx, float ury)` Implements a link to another document.
`(package private) void` `remoteGoto(java.lang.String filename, java.lang.String name, float llx, float lly, float urx, float ury)` Implements a link to another document.
`protected void` `renderCells(PdfDocument.RenderingContext ctx, java.util.List cells, boolean hasToFit)`
`void` `resetFooter()` Resets the footer of this document.
`void` `resetHeader()` Resets the header of this document.
`void` `resetPageCount()` Sets the page number to 0.
`(package private) void` `setAction(PdfAction action, float llx, float lly, float urx, float ury)` Implements an action in an area.
`(package private) void` `setBoxSize(java.lang.String boxName, Rectangle size)`
`void` `setCollection(PdfCollection collection)` Sets the collection dictionary.
`(package private) void` `setCropBoxSize(Rectangle crop)`
`(package private) void` `setDuration(int seconds)` Sets the display duration for the page (for presentations)
`void` `setFooter(HeaderFooter footer)` Changes the footer of this document.
`void` `setHeader(HeaderFooter header)` Changes the header of this document.
`(package private) void` `setLeading(float leading)` Setter for the current leading.
`boolean` `setMarginMirroring(boolean MarginMirroring)` Set the margin mirroring.
`boolean` `setMarginMirroringTopBottom(boolean MarginMirroringTopBottom)` Set the margin mirroring.
`boolean` `setMargins(float marginLeft, float marginRight, float marginTop, float marginBottom)` Sets the margins.
`protected void` `setNewPageSizeAndMargins()`
`(package private) void` `setOpenAction(PdfAction action)`
`(package private) void` `setOpenAction(java.lang.String name)`
`(package private) void` `setPageAction(PdfName actionType, PdfAction action)`
`void` `setPageCount(int pageN)` Sets the page number.
`(package private) void` `setPageEmpty(boolean pageEmpty)`
`(package private) void` `setPageLabels(PdfPageLabels pageLabels)` Sets the page labels
`boolean` `setPageSize(Rectangle pageSize)` Sets the pagesize.
`(package private) void` `setSigFlags(int f)`
`(package private) void` `setStrictImageSequence(boolean strictImageSequence)` Setter for property strictImageSequence.
`(package private) void` `setThumbnail(Image image)`
`(package private) void` `setTransition(PdfTransition transition)` Sets the transition for the page
`(package private) void` `setViewerPreferences(int preferences)`
`void` `setXmpMetadata(byte[] xmpMetadata)` Use this method to set the XMP Metadata.
`(package private) void` `traverseOutlineCount(PdfOutline outline)` Recursive method to update the count in the outlines.
`(package private) void` `writeLineToContent(PdfLine line, PdfContentByte text, PdfContentByte graphics, java.lang.Object[] currentValues, float ratio)` Writes a text line to the document.
`(package private) void` `writeOutlines()` Writes the outline tree to the body of the PDF document.

### Methods inherited from class com.lowagie.text.Document

`addAuthor, addCreationDate, addCreator, addDocListener, addHeader, addKeywords, addProducer, addSubject, addTitle, bottom, bottom, bottomMargin, getHtmlStyleClass, getJavaScript_onLoad, getJavaScript_onUnLoad, getPageNumber, getPageSize, getProduct, getRelease, getVersion, isMarginMirroring, isOpen, left, left, leftMargin, removeDocListener, right, right, rightMargin, setHtmlStyleClass, setJavaScript_onLoad, setJavaScript_onUnLoad, top, top, topMargin`

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

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

### Field Detail

#### writer

    protected PdfWriter writer

The `PdfWriter`.

#### text

    protected PdfContentByte text

This is the PdfContentByte object, containing the text.

#### graphics

    protected PdfContentByte graphics

This is the PdfContentByte object, containing the borders and other Graphics.

#### leading

    protected float leading

This represents the leading of the lines.

#### alignment

    protected int alignment

This represents the current alignment of the PDF Elements.

#### currentHeight

    protected float currentHeight

This is the current height of the document.

#### isSectionTitle

    protected boolean isSectionTitle

Signals that onParagraph is valid (to avoid that a Chapter/Section title is treated as a Paragraph).

Since:
  2.1.2

#### leadingCount

    protected int leadingCount

Signals that the current leading has to be subtracted from a YMark object when positive.

Since:
  2.1.2

#### anchorAction

    protected PdfAction anchorAction

The current active `PdfAction` when processing an `Anchor`.

#### textEmptySize

    protected int textEmptySize

#### xmpMetadata

    protected byte[] xmpMetadata

XMP Metadata for the page.

#### nextMarginLeft

    protected float nextMarginLeft

margin in x direction starting from the left. Will be valid in the next page

#### nextMarginRight

    protected float nextMarginRight

margin in x direction starting from the right. Will be valid in the next page

#### nextMarginTop

    protected float nextMarginTop

margin in y direction starting from the top. Will be valid in the next page

#### nextMarginBottom

    protected float nextMarginBottom

margin in y direction starting from the bottom. Will be valid in the next page

#### firstPageEvent

    protected boolean firstPageEvent

Signals that OnOpenDocument should be called.

#### line

    protected PdfLine line

The line that is currently being written.

#### lines

    protected java.util.ArrayList lines

The lines that are written until now.

#### lastElementType

    protected int lastElementType

Holds the type of the last element, that has been added to the document.

#### hangingPunctuation

    static final java.lang.String hangingPunctuation

The characters to be applied the hanging punctuation.

See Also:
  Constant Field Values

#### indentation

    protected PdfDocument.Indentation indentation

#### info

    protected PdfDocument.PdfInfo info

some meta information about the Document.

#### rootOutline

    protected PdfOutline rootOutline

This is the root outline of the document.

#### currentOutline

    protected PdfOutline currentOutline

This is the current `PdfOutline` in the hierarchy of outlines.

#### viewerPreferences

    protected PdfViewerPreferencesImp viewerPreferences

Contains the Viewer preferences of this PDF document.

#### pageLabels

    protected PdfPageLabels pageLabels

#### localDestinations

    protected java.util.TreeMap localDestinations

Stores the destinations keyed by name. Value is `Object[]{PdfAction,PdfIndirectReference,PdfDestintion}`.

#### jsCounter

    int jsCounter

Stores a list of document level JavaScript actions.

#### documentLevelJS

    protected java.util.HashMap documentLevelJS

#### SIXTEEN_DIGITS

    protected static final java.text.DecimalFormat SIXTEEN_DIGITS

#### documentFileAttachment

    protected java.util.HashMap documentFileAttachment

#### openActionName

    protected java.lang.String openActionName

#### openActionAction

    protected PdfAction openActionAction

#### additionalActions

    protected PdfDictionary additionalActions

#### collection

    protected PdfCollection collection

#### annotationsImp

    PdfAnnotationsImp annotationsImp

#### markPoint

    protected int markPoint

#### nextPageSize

    protected Rectangle nextPageSize

This is the size of the next page.

#### thisBoxSize

    protected java.util.HashMap thisBoxSize

This is the size of the several boxes of the current Page.

#### boxSize

    protected java.util.HashMap boxSize

This is the size of the several boxes that will be used in the next page.

#### pageEmpty

    private boolean pageEmpty

This checks if the page is empty.

#### duration

    protected int duration

The duration of the page

#### transition

    protected PdfTransition transition

The page transition

#### pageAA

    protected PdfDictionary pageAA

#### thumb

    protected PdfIndirectReference thumb

#### pageResources

    protected PageResources pageResources

This are the page resources of the current Page.

#### strictImageSequence

    protected boolean strictImageSequence

Holds value of property strictImageSequence.

#### imageEnd

    protected float imageEnd

This is the position where the image ends.

#### imageWait

    protected Image imageWait

This is the image that could not be shown on a previous page.

### Constructor Detail

#### PdfDocument

    public PdfDocument()

Constructs a new PDF document.

### Method Detail

#### addWriter

    public void addWriter(PdfWriter writer)
                   throws DocumentException

Adds a `PdfWriter` to the `PdfDocument`.

Parameters:
  `writer` - the `PdfWriter` that writes everything what is added to this document to an outputstream.
Throws:
  `DocumentException` - on error

#### getLeading

    public float getLeading()

Getter for the current leading.

Returns:
  the current leading
Since:
  2.1.2

#### setLeading

    void setLeading(float leading)

Setter for the current leading.

Parameters:
  `leading` - the current leading
Since:
  2.1.6

#### add

    public boolean add(Element element)
                throws DocumentException

Signals that an `Element` was added to the `Document`.

Specified by:
  `add` in interface `ElementListener`
Overrides:
  `add` in class `Document`
Parameters:
  `element` - the element to add
Returns:
  `true` if the element was added, `false` if not.
Throws:
  `DocumentException` - when a document isn't open yet, or has been closed

#### open

    public void open()

Opens the document.

You have to open the document before you can begin to add content to the body of the document.

Specified by:
  `open` in interface `DocListener`
Overrides:
  `open` in class `Document`

#### close

    public void close()

Closes the document. Once all the content has been written in the body, you have to close the body. After that nothing can be written to the body anymore.

Specified by:
  `close` in interface `DocListener`
Overrides:
  `close` in class `Document`

#### setXmpMetadata

    public void setXmpMetadata(byte[] xmpMetadata)

Use this method to set the XMP Metadata.

Parameters:
  `xmpMetadata` - The xmpMetadata to set.

#### newPage

    public boolean newPage()

Makes a new page and sends it to the `PdfWriter`.

Specified by:
  `newPage` in interface `DocListener`
Overrides:
  `newPage` in class `Document`
Returns:
  a `boolean`

#### setPageSize

    public boolean setPageSize(Rectangle pageSize)

Sets the pagesize.

Specified by:
  `setPageSize` in interface `DocListener`
Overrides:
  `setPageSize` in class `Document`
Parameters:
  `pageSize` - the new pagesize
Returns:
  `true` if the page size was set

#### setMargins

    public boolean setMargins(float marginLeft,
                     float marginRight,
                     float marginTop,
                     float marginBottom)

Sets the margins.

Specified by:
  `setMargins` in interface `DocListener`
Overrides:
  `setMargins` in class `Document`
Parameters:
  `marginLeft` - the margin on the left
  `marginRight` - the margin on the right
  `marginTop` - the margin on the top
  `marginBottom` - the margin on the bottom
Returns:
  a `boolean`

#### setMarginMirroring

    public boolean setMarginMirroring(boolean MarginMirroring)

Description copied from class: `Document`
Set the margin mirroring. It will mirror right/left margins for odd/even pages.

Note: it will not work with `Table`.

Specified by:
  `setMarginMirroring` in interface `DocListener`
Overrides:
  `setMarginMirroring` in class `Document`
Parameters:
  `MarginMirroring` - `true` to mirror the margins
Returns:
  always `true`
See Also:
  `DocListener.setMarginMirroring(boolean)`

#### setMarginMirroringTopBottom

    public boolean setMarginMirroringTopBottom(boolean MarginMirroringTopBottom)

Description copied from class: `Document`
Set the margin mirroring. It will mirror top/bottom margins for odd/even pages.

Note: it will not work with `Table`.

Specified by:
  `setMarginMirroringTopBottom` in interface `DocListener`
Overrides:
  `setMarginMirroringTopBottom` in class `Document`
Parameters:
  `MarginMirroringTopBottom` - `true` to mirror the margins
Returns:
  always `true`
Since:
  2.1.6
See Also:
  `DocListener.setMarginMirroring(boolean)`

#### setPageCount

    public void setPageCount(int pageN)

Sets the page number.

Specified by:
  `setPageCount` in interface `DocListener`
Overrides:
  `setPageCount` in class `Document`
Parameters:
  `pageN` - the new page number

#### resetPageCount

    public void resetPageCount()

Sets the page number to 0.

Specified by:
  `resetPageCount` in interface `DocListener`
Overrides:
  `resetPageCount` in class `Document`

#### setHeader

    public void setHeader(HeaderFooter header)

Changes the header of this document.

Specified by:
  `setHeader` in interface `DocListener`
Overrides:
  `setHeader` in class `Document`
Parameters:
  `header` - the new header

#### resetHeader

    public void resetHeader()

Resets the header of this document.

Specified by:
  `resetHeader` in interface `DocListener`
Overrides:
  `resetHeader` in class `Document`

#### setFooter

    public void setFooter(HeaderFooter footer)

Changes the footer of this document.

Specified by:
  `setFooter` in interface `DocListener`
Overrides:
  `setFooter` in class `Document`
Parameters:
  `footer` - the new footer

#### resetFooter

    public void resetFooter()

Resets the footer of this document.

Specified by:
  `resetFooter` in interface `DocListener`
Overrides:
  `resetFooter` in class `Document`

#### initPage

    protected void initPage()
                     throws DocumentException

Initializes a page.

If the footer/header is set, it is printed.

Throws:
  `DocumentException` - on error

#### newLine

    protected void newLine()
                    throws DocumentException

Adds the current line to the list of lines and also adds an empty line.

Throws:
  `DocumentException` - on error

#### carriageReturn

    protected void carriageReturn()

If the current line is not empty or null, it is added to the arraylist of lines and a new empty line is added.

#### getVerticalPosition

    public float getVerticalPosition(boolean ensureNewLine)

Gets the current vertical page position.

Parameters:
  `ensureNewLine` - Tells whether a new line shall be enforced. This may cause side effects for elements that do not terminate the lines they've started because those lines will get terminated.
Returns:
  The current vertical page position.

#### ensureNewLine

    protected void ensureNewLine()

Ensures that a new line has been started.

#### flushLines

    protected float flushLines()
                        throws DocumentException

Writes all the lines to the text-object.

Returns:
  the displacement that was caused
Throws:
  `DocumentException` - on error

#### writeLineToContent

    void writeLineToContent(PdfLine line,
                          PdfContentByte text,
                          PdfContentByte graphics,
                          java.lang.Object[] currentValues,
                          float ratio)
                      throws DocumentException

Writes a text line to the document. It takes care of all the attributes.

Before entering the line position must have been established and the `text` argument must be in text object scope (`beginText()`).

Parameters:
  `line` - the line to be written
  `text` - the `PdfContentByte` where the text will be written to
  `graphics` - the `PdfContentByte` where the graphics will be written to
  `currentValues` - the current font and extra spacing values
  `ratio` -
Throws:
  `DocumentException` - on error

#### indentLeft

    protected float indentLeft()

Gets the indentation on the left side.

Returns:
  a margin

#### indentRight

    protected float indentRight()

Gets the indentation on the right side.

Returns:
  a margin

#### indentTop

    protected float indentTop()

Gets the indentation on the top side.

Returns:
  a margin

#### indentBottom

    float indentBottom()

Gets the indentation on the bottom side.

Returns:
  a margin

#### addSpacing

    protected void addSpacing(float extraspace,
                  float oldleading,
                  Font f)

Adds extra space. This method should probably be rewritten.

#### getInfo

    PdfDocument.PdfInfo getInfo()

Gets the `PdfInfo`-object.

Returns:
  `PdfInfo</COPE>`

#### getCatalog

    PdfDocument.PdfCatalog getCatalog(PdfIndirectReference pages)

Gets the `PdfCatalog`-object.

Parameters:
  `pages` - an indirect reference to this document pages
Returns:
  `PdfCatalog`

#### addOutline

    void addOutline(PdfOutline outline,
                  java.lang.String name)

Adds a named outline to the document .

Parameters:
  `outline` - the outline to be added
  `name` - the name of this local destination

#### getRootOutline

    public PdfOutline getRootOutline()

Gets the root outline. All the outlines must be created with a parent. The first level is created with this outline.

Returns:
  the root outline

#### calculateOutlineCount

    void calculateOutlineCount()

Updates the count in the outlines.

#### traverseOutlineCount

    void traverseOutlineCount(PdfOutline outline)

Recursive method to update the count in the outlines.

#### writeOutlines

    void writeOutlines()
                 throws java.io.IOException

Writes the outline tree to the body of the PDF document.

Throws:
  `java.io.IOException`

#### outlineTree

    void outlineTree(PdfOutline outline)
               throws java.io.IOException

Recursive method used to write outlines.

Throws:
  `java.io.IOException`

#### setViewerPreferences

    void setViewerPreferences(int preferences)

See Also:
  `PdfViewerPreferences.setViewerPreferences(int)`

#### addViewerPreference

    void addViewerPreference(PdfName key,
                           PdfObject value)

See Also:
  `PdfViewerPreferences.addViewerPreference(com.lowagie.text.pdf.PdfName, com.lowagie.text.pdf.PdfObject)`

#### setPageLabels

    void setPageLabels(PdfPageLabels pageLabels)

Sets the page labels

Parameters:
  `pageLabels` - the page labels

#### localGoto

    void localGoto(java.lang.String name,
                 float llx,
                 float lly,
                 float urx,
                 float ury)

Implements a link to other part of the document. The jump will be made to a local destination with the same name, that must exist.

Parameters:
  `name` - the name for this link
  `llx` - the lower left x corner of the activation area
  `lly` - the lower left y corner of the activation area
  `urx` - the upper right x corner of the activation area
  `ury` - the upper right y corner of the activation area

#### remoteGoto

    void remoteGoto(java.lang.String filename,
                  java.lang.String name,
                  float llx,
                  float lly,
                  float urx,
                  float ury)

Implements a link to another document.

Parameters:
  `filename` - the filename for the remote document
  `name` - the name to jump to
  `llx` - the lower left x corner of the activation area
  `lly` - the lower left y corner of the activation area
  `urx` - the upper right x corner of the activation area
  `ury` - the upper right y corner of the activation area

#### remoteGoto

    void remoteGoto(java.lang.String filename,
                  int page,
                  float llx,
                  float lly,
                  float urx,
                  float ury)

Implements a link to another document.

Parameters:
  `filename` - the filename for the remote document
  `page` - the page to jump to
  `llx` - the lower left x corner of the activation area
  `lly` - the lower left y corner of the activation area
  `urx` - the upper right x corner of the activation area
  `ury` - the upper right y corner of the activation area

#### setAction

    void setAction(PdfAction action,
                 float llx,
                 float lly,
                 float urx,
                 float ury)

Implements an action in an area.

Parameters:
  `action` - the `PdfAction`
  `llx` - the lower left x corner of the activation area
  `lly` - the lower left y corner of the activation area
  `urx` - the upper right x corner of the activation area
  `ury` - the upper right y corner of the activation area

#### getLocalGotoAction

    PdfAction getLocalGotoAction(java.lang.String name)

#### localDestination

    boolean localDestination(java.lang.String name,
                           PdfDestination destination)

The local destination to where a local goto with the same name will jump to.

Parameters:
  `name` - the name of this local destination
  `destination` - the `PdfDestination` with the jump coordinates
Returns:
  `true` if the local destination was added, `false` if a local destination with the same name already existed

#### addJavaScript

    void addJavaScript(PdfAction js)

#### addJavaScript

    void addJavaScript(java.lang.String name,
                     PdfAction js)

#### getDocumentLevelJS

    java.util.HashMap getDocumentLevelJS()

#### addFileAttachment

    void addFileAttachment(java.lang.String description,
                         PdfFileSpecification fs)
                     throws java.io.IOException

Throws:
  `java.io.IOException`

#### getDocumentFileAttachment

    java.util.HashMap getDocumentFileAttachment()

#### setOpenAction

    void setOpenAction(java.lang.String name)

#### setOpenAction

    void setOpenAction(PdfAction action)

#### addAdditionalAction

    void addAdditionalAction(PdfName actionType,
                           PdfAction action)

#### setCollection

    public void setCollection(PdfCollection collection)

Sets the collection dictionary.

Parameters:
  `collection` - a dictionary of type PdfCollection

#### getAcroForm

    PdfAcroForm getAcroForm()

Gets the AcroForm object.

Returns:
  the PdfAcroform object of the PdfDocument

#### setSigFlags

    void setSigFlags(int f)

#### addCalculationOrder

    void addCalculationOrder(PdfFormField formField)

#### addAnnotation

    void addAnnotation(PdfAnnotation annot)

#### getMarkPoint

    int getMarkPoint()

#### incMarkPoint

    void incMarkPoint()

#### setCropBoxSize

    void setCropBoxSize(Rectangle crop)

#### setBoxSize

    void setBoxSize(java.lang.String boxName,
                  Rectangle size)

#### setNewPageSizeAndMargins

    protected void setNewPageSizeAndMargins()

#### getBoxSize

    Rectangle getBoxSize(java.lang.String boxName)

Gives the size of a trim, art, crop or bleed box, or null if not defined.

Parameters:
  `boxName` - crop, trim, art or bleed

#### setPageEmpty

    void setPageEmpty(boolean pageEmpty)

#### isPageEmpty

    boolean isPageEmpty()

#### setDuration

    void setDuration(int seconds)

Sets the display duration for the page (for presentations)

Parameters:
  `seconds` - the number of seconds to display the page

#### setTransition

    void setTransition(PdfTransition transition)

Sets the transition for the page

Parameters:
  `transition` - the PdfTransition object

#### setPageAction

    void setPageAction(PdfName actionType,
                     PdfAction action)

#### setThumbnail

    void setThumbnail(Image image)
                throws PdfException,
                       DocumentException

Throws:
  `PdfException`
  `DocumentException`

#### getPageResources

    PageResources getPageResources()

#### isStrictImageSequence

    boolean isStrictImageSequence()

Getter for property strictImageSequence.

Returns:
  Value of property strictImageSequence.

#### setStrictImageSequence

    void setStrictImageSequence(boolean strictImageSequence)

Setter for property strictImageSequence.

Parameters:
  `strictImageSequence` - New value of property strictImageSequence.

#### clearTextWrap

    public void clearTextWrap()

Method added by Pelikan Stephan

#### add

    protected void add(Image image)
                throws PdfException,
                       DocumentException

Adds an image to the document.

Parameters:
  `image` - the `Image` to add
Throws:
  `PdfException` - on error
  `DocumentException` - on error

#### addPTable

    void addPTable(PdfPTable ptable)
             throws DocumentException

Adds a `PdfPTable` to the document.

Parameters:
  `ptable` - the `PdfPTable` to be added to the document.
Throws:
  `DocumentException` - on error

#### fitsPage

    boolean fitsPage(PdfPTable table,
                   float margin)

Checks if a `PdfPTable` fits the current page of the `PdfDocument`.

Parameters:
  `table` - the table that has to be checked
  `margin` - a certain margin
Returns:
  `true` if the `PdfPTable` fits the page, `false` otherwise.

#### addPdfTable

    private void addPdfTable(Table t)
                      throws DocumentException

Adds a new table to the document.

Parameters:
  `t` - Table to add. Rendered rows will be deleted after processing.
Throws:
  `DocumentException`
Since:
  iText 2.0.8

#### analyzeRow

    protected void analyzeRow(java.util.ArrayList rows,
                  PdfDocument.RenderingContext ctx)

#### mayBeRemoved

    protected boolean mayBeRemoved(java.util.ArrayList row)

#### consumeRowspan

    protected void consumeRowspan(java.util.ArrayList row,
                      PdfDocument.RenderingContext ctx)

#### extractRows

    protected java.util.ArrayList extractRows(java.util.ArrayList cells,
                                  PdfDocument.RenderingContext ctx)

#### renderCells

    protected void renderCells(PdfDocument.RenderingContext ctx,
                   java.util.List cells,
                   boolean hasToFit)
                        throws DocumentException

Throws:
  `DocumentException`

#### bottom

    float bottom(Table table)

Returns the bottomvalue of a `Table` if it were added to this document.

Parameters:
  `table` - the table that may or may not be added to this document
Returns:
  a bottom value

#### doFooter

    protected void doFooter()
                     throws DocumentException

Throws:
  `DocumentException`

#### doHeader

    protected void doHeader()
                     throws DocumentException

Throws:
  `DocumentException`