com.lowagie.text

## Class Document

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

- All Implemented Interfaces:
    DocListener, ElementListener, java.util.EventListener
  Direct Known Subclasses:
    PdfDocument

      public class Document
      extends java.lang.Object
      implements DocListener

  A generic Document class.

  All kinds of Text-elements can be added to a `HTMLDocument`. The `Document` signals all the listeners when an element has been added.

  Remark:

  1. Once a document is created you can add some meta information.
  2. You can also set the headers/footers.
  3. You have to open the document before you can write content.
  4. You can only write content (no more meta-formation!) once a document is opened.
  5. When you change the header/footer on a certain page, this will be effective starting on the next page.
  6. After closing the document, every listener (as well as its `OutputStream`) is closed too.
  Example:

  >     // creation of the document with a certain size and certain margins
  >      Document document = new Document(PageSize.A4, 50, 50, 50, 50);
  >       try {
  >        // creation of the different writers
  >        HtmlWriter.getInstance(document , System.out);
  >        PdfWriter.getInstance(document , new FileOutputStream("text.pdf"));
  >        // we add some meta information to the document
  >        document.addAuthor("Bruno Lowagie");
  >        document.addSubject("This is the result of a Test.");
  >        // we open the document for writing
  >        document.open();
  >        document.add(new Paragraph("Hello world"));
  >       } catch(DocumentException de) {
  >        System.err.println(de.getMessage());
  >       }
  >       document.close();

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `chapternumber` This is a chapter number in case ChapterAutoNumber is used.
    `protected boolean` | `close` Has the document already been closed?
    `static boolean` | `compress` Allows the pdf documents to be produced without compression for debugging purposes.
    `protected HeaderFooter` | `footer` This is the textual part of the footer
    `protected HeaderFooter` | `header` This is the textual part of a Page; it can contain a header
    `protected java.lang.String` | `htmlStyleClass` Style class in HTML body tag
    `private static java.lang.String` | `ITEXT` This constant may only be changed by Paulo Soares and/or Bruno Lowagie.
    `private static java.lang.String` | `ITEXT_VERSION` This constant may only be changed by Paulo Soares and/or Bruno Lowagie.
    `protected java.lang.String` | `javaScript_onLoad` Content of JavaScript onLoad function
    `protected java.lang.String` | `javaScript_onUnLoad` Content of JavaScript onUnLoad function
    `private java.util.ArrayList` | `listeners` The DocListener.
    `protected float` | `marginBottom` margin in y direction starting from the bottom
    `protected float` | `marginLeft` margin in x direction starting from the left
    `protected boolean` | `marginMirroring` mirroring of the left/right margins
    `protected boolean` | `marginMirroringTopBottom` mirroring of the top/bottom margins
    `protected float` | `marginRight` margin in x direction starting from the right
    `protected float` | `marginTop` margin in y direction starting from the top
    `protected boolean` | `open` Is the document open or not?
    `protected int` | `pageN` Current pagenumber
    `protected Rectangle` | `pageSize` The size of the page.
    `static boolean` | `plainRandomAccess` When true the file access is not done through a memory mapped file.
    `private static java.lang.String` | `RELEASE` This constant may only be changed by Paulo Soares and/or Bruno Lowagie.
    `static float` | `wmfFontCorrection` Scales the WMF font size.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Document()` Constructs a new `Document` -object.
    `Document(Rectangle pageSize)` Constructs a new `Document` -object.
    `Document(Rectangle pageSize, float marginLeft, float marginRight, float marginTop, float marginBottom)` Constructs a new `Document` -object.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `add(Element element)` Adds an `Element` to the `Document`.
    `boolean` | `addAuthor(java.lang.String author)` Adds the author to a Document.
    `boolean` | `addCreationDate()` Adds the current date and time to a Document.
    `boolean` | `addCreator(java.lang.String creator)` Adds the creator to a Document.
    `void` | `addDocListener(DocListener listener)` Adds a `DocListener` to the `Document`.
    `boolean` | `addHeader(java.lang.String name, java.lang.String content)` Adds a user defined header to the document.
    `boolean` | `addKeywords(java.lang.String keywords)` Adds the keywords to a Document.
    `boolean` | `addProducer()` Adds the producer to a Document.
    `boolean` | `addSubject(java.lang.String subject)` Adds the subject to a Document.
    `boolean` | `addTitle(java.lang.String title)` Adds the title to a Document.
    `float` | `bottom()` Returns the lower left y-coordinate.
    `float` | `bottom(float margin)` Returns the lower left y-coordinate, considering a given margin.
    `float` | `bottomMargin()` Returns the bottom margin.
    `void` | `close()` Closes the document.
    `java.lang.String` | `getHtmlStyleClass()` Gets the style class of the HTML body tag
    `java.lang.String` | `getJavaScript_onLoad()` Gets the JavaScript onLoad command.
    `java.lang.String` | `getJavaScript_onUnLoad()` Gets the JavaScript onUnLoad command.
    `int` | `getPageNumber()` Returns the current page number.
    `Rectangle` | `getPageSize()` Gets the pagesize.
    `static java.lang.String` | `getProduct()` Gets the product name.
    `static java.lang.String` | `getRelease()` Gets the release number.
    `static java.lang.String` | `getVersion()` Gets the iText version.
    `boolean` | `isMarginMirroring()` Gets the margin mirroring flag.
    `boolean` | `isOpen()` Checks if the document is open.
    `float` | `left()` Returns the lower left x-coordinate.
    `float` | `left(float margin)` Returns the lower left x-coordinate considering a given margin.
    `float` | `leftMargin()` Returns the left margin.
    `boolean` | `newPage()` Signals that an new page has to be started.
    `void` | `open()` Opens the document.
    `void` | `removeDocListener(DocListener listener)` Removes a `DocListener` from the `Document`.
    `void` | `resetFooter()` Resets the footer of this document.
    `void` | `resetHeader()` Resets the header of this document.
    `void` | `resetPageCount()` Sets the page number to 0.
    `float` | `right()` Returns the upper right x-coordinate.
    `float` | `right(float margin)` Returns the upper right x-coordinate, considering a given margin.
    `float` | `rightMargin()` Return the right margin.
    `void` | `setFooter(HeaderFooter footer)` Changes the footer of this document.
    `void` | `setHeader(HeaderFooter header)` Changes the header of this document.
    `void` | `setHtmlStyleClass(java.lang.String htmlStyleClass)` Adds a style class to the HTML body tag
    `void` | `setJavaScript_onLoad(java.lang.String code)` Adds a JavaScript onLoad function to the HTML body tag
    `void` | `setJavaScript_onUnLoad(java.lang.String code)` Adds a JavaScript onUnLoad function to the HTML body tag
    `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.
    `void` | `setPageCount(int pageN)` Sets the page number.
    `boolean` | `setPageSize(Rectangle pageSize)` Sets the pagesize.
    `float` | `top()` Returns the upper right y-coordinate.
    `float` | `top(float margin)` Returns the upper right y-coordinate, considering a given margin.
    `float` | `topMargin()` Returns the top margin.

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

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

- - ### Field Detail

    - #### ITEXT

          private static final java.lang.String ITEXT

      This constant may only be changed by Paulo Soares and/or Bruno Lowagie.
      Since:
        2.1.6
      See Also:
        Constant Field Values

    - #### RELEASE

          private static final java.lang.String RELEASE

      This constant may only be changed by Paulo Soares and/or Bruno Lowagie.
      Since:
        2.1.6
      See Also:
        Constant Field Values

    - #### ITEXT_VERSION

          private static final java.lang.String ITEXT_VERSION

      This constant may only be changed by Paulo Soares and/or Bruno Lowagie.
      See Also:
        Constant Field Values

    - #### compress

          public static boolean compress

      Allows the pdf documents to be produced without compression for debugging purposes.

    - #### plainRandomAccess

          public static boolean plainRandomAccess

      When true the file access is not done through a memory mapped file. Use it if the file is too big to be mapped in your address space.

    - #### wmfFontCorrection

          public static float wmfFontCorrection

      Scales the WMF font size. The default value is 0.86.

    - #### listeners

          private java.util.ArrayList listeners

      The DocListener.

    - #### open

          protected boolean open

      Is the document open or not?

    - #### close

          protected boolean close

      Has the document already been closed?

    - #### pageSize

          protected Rectangle pageSize

      The size of the page.

    - #### marginLeft

          protected float marginLeft

      margin in x direction starting from the left

    - #### marginRight

          protected float marginRight

      margin in x direction starting from the right

    - #### marginTop

          protected float marginTop

      margin in y direction starting from the top

    - #### marginBottom

          protected float marginBottom

      margin in y direction starting from the bottom

    - #### marginMirroring

          protected boolean marginMirroring

      mirroring of the left/right margins

    - #### marginMirroringTopBottom

          protected boolean marginMirroringTopBottom

      mirroring of the top/bottom margins
      Since:
        2.1.6

    - #### javaScript_onLoad

          protected java.lang.String javaScript_onLoad

      Content of JavaScript onLoad function

    - #### javaScript_onUnLoad

          protected java.lang.String javaScript_onUnLoad

      Content of JavaScript onUnLoad function

    - #### htmlStyleClass

          protected java.lang.String htmlStyleClass

      Style class in HTML body tag

    - #### pageN

          protected int pageN

      Current pagenumber

    - #### header

          protected HeaderFooter header

      This is the textual part of a Page; it can contain a header

    - #### footer

          protected HeaderFooter footer

      This is the textual part of the footer

    - #### chapternumber

          protected int chapternumber

      This is a chapter number in case ChapterAutoNumber is used.

  - ### Constructor Detail

    - #### Document

          public Document()

      Constructs a new `Document` -object.

    - #### Document

          public Document(Rectangle pageSize)

      Constructs a new `Document` -object.
      Parameters:
        `pageSize` - the pageSize

    - #### Document

          public Document(Rectangle pageSize,
                  float marginLeft,
                  float marginRight,
                  float marginTop,
                  float marginBottom)

      Constructs a new `Document` -object.
      Parameters:
        `pageSize` - the pageSize
        `marginLeft` - the margin on the left
        `marginRight` - the margin on the right
        `marginTop` - the margin on the top
        `marginBottom` - the margin on the bottom

  - ### Method Detail

    - #### addDocListener

          public void addDocListener(DocListener listener)

      Adds a `DocListener` to the `Document`.
      Parameters:
        `listener` - the new DocListener.

    - #### removeDocListener

          public void removeDocListener(DocListener listener)

      Removes a `DocListener` from the `Document`.
      Parameters:
        `listener` - the DocListener that has to be removed.

    - #### add

          public boolean add(Element element)
                      throws DocumentException

      Adds an `Element` to the `Document`.
      Specified by:
        `add` in interface `ElementListener`
      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.

      Once the document is opened, you can't write any Header- or Meta-information anymore. 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`

    - #### setPageSize

          public boolean setPageSize(Rectangle pageSize)

      Sets the pagesize.
      Specified by:
        `setPageSize` in interface `DocListener`
      Parameters:
        `pageSize` - the new pagesize
      Returns:
        a `boolean`

    - #### setMargins

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

      Sets the margins.
      Specified by:
        `setMargins` in interface `DocListener`
      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`

    - #### newPage

          public boolean newPage()

      Signals that an new page has to be started.
      Specified by:
        `newPage` in interface `DocListener`
      Returns:
        `true` if the page was added, `false` if not.

    - #### setHeader

          public void setHeader(HeaderFooter header)

      Changes the header of this document.
      Specified by:
        `setHeader` in interface `DocListener`
      Parameters:
        `header` - the new header

    - #### resetHeader

          public void resetHeader()

      Resets the header of this document.
      Specified by:
        `resetHeader` in interface `DocListener`

    - #### setFooter

          public void setFooter(HeaderFooter footer)

      Changes the footer of this document.
      Specified by:
        `setFooter` in interface `DocListener`
      Parameters:
        `footer` - the new footer

    - #### resetFooter

          public void resetFooter()

      Resets the footer of this document.
      Specified by:
        `resetFooter` in interface `DocListener`

    - #### resetPageCount

          public void resetPageCount()

      Sets the page number to 0.
      Specified by:
        `resetPageCount` in interface `DocListener`

    - #### setPageCount

          public void setPageCount(int pageN)

      Sets the page number.
      Specified by:
        `setPageCount` in interface `DocListener`
      Parameters:
        `pageN` - the new page number

    - #### getPageNumber

          public int getPageNumber()

      Returns the current page number.
      Returns:
        the current page number

    - #### 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`

    - #### addHeader

          public boolean addHeader(java.lang.String name,
                          java.lang.String content)

      Adds a user defined header to the document.
      Parameters:
        `name` - the name of the header
        `content` - the content of the header
      Returns:
        `true` if successful, `false` otherwise

    - #### addTitle

          public boolean addTitle(java.lang.String title)

      Adds the title to a Document.
      Parameters:
        `title` - the title
      Returns:
        `true` if successful, `false` otherwise

    - #### addSubject

          public boolean addSubject(java.lang.String subject)

      Adds the subject to a Document.
      Parameters:
        `subject` - the subject
      Returns:
        `true` if successful, `false` otherwise

    - #### addKeywords

          public boolean addKeywords(java.lang.String keywords)

      Adds the keywords to a Document.
      Parameters:
        `keywords` - adds the keywords to the document
      Returns:
        `true` if successful, `false` otherwise

    - #### addAuthor

          public boolean addAuthor(java.lang.String author)

      Adds the author to a Document.
      Parameters:
        `author` - the name of the author
      Returns:
        `true` if successful, `false` otherwise

    - #### addCreator

          public boolean addCreator(java.lang.String creator)

      Adds the creator to a Document.
      Parameters:
        `creator` - the name of the creator
      Returns:
        `true` if successful, `false` otherwise

    - #### addProducer

          public boolean addProducer()

      Adds the producer to a Document.
      Returns:
        `true` if successful, `false` otherwise

    - #### addCreationDate

          public boolean addCreationDate()

      Adds the current date and time to a Document.
      Returns:
        `true` if successful, `false` otherwise

    - #### leftMargin

          public float leftMargin()

      Returns the left margin.
      Returns:
        the left margin

    - #### rightMargin

          public float rightMargin()

      Return the right margin.
      Returns:
        the right margin

    - #### topMargin

          public float topMargin()

      Returns the top margin.
      Returns:
        the top margin

    - #### bottomMargin

          public float bottomMargin()

      Returns the bottom margin.
      Returns:
        the bottom margin

    - #### left

          public float left()

      Returns the lower left x-coordinate.
      Returns:
        the lower left x-coordinate

    - #### right

          public float right()

      Returns the upper right x-coordinate.
      Returns:
        the upper right x-coordinate

    - #### top

          public float top()

      Returns the upper right y-coordinate.
      Returns:
        the upper right y-coordinate

    - #### bottom

          public float bottom()

      Returns the lower left y-coordinate.
      Returns:
        the lower left y-coordinate

    - #### left

          public float left(float margin)

      Returns the lower left x-coordinate considering a given margin.
      Parameters:
        `margin` - a margin
      Returns:
        the lower left x-coordinate

    - #### right

          public float right(float margin)

      Returns the upper right x-coordinate, considering a given margin.
      Parameters:
        `margin` - a margin
      Returns:
        the upper right x-coordinate

    - #### top

          public float top(float margin)

      Returns the upper right y-coordinate, considering a given margin.
      Parameters:
        `margin` - a margin
      Returns:
        the upper right y-coordinate

    - #### bottom

          public float bottom(float margin)

      Returns the lower left y-coordinate, considering a given margin.
      Parameters:
        `margin` - a margin
      Returns:
        the lower left y-coordinate

    - #### getPageSize

          public Rectangle getPageSize()

      Gets the pagesize.
      Returns:
        the page size

    - #### isOpen

          public boolean isOpen()

      Checks if the document is open.
      Returns:
        `true` if the document is open

    - #### getProduct

          public static final java.lang.String getProduct()

      Gets the product name. This method may only be changed by Paulo Soares and/or Bruno Lowagie.
      Returns:
        the product name
      Since:
        2.1.6

    - #### getRelease

          public static final java.lang.String getRelease()

      Gets the release number. This method may only be changed by Paulo Soares and/or Bruno Lowagie.
      Returns:
        the product name
      Since:
        2.1.6

    - #### getVersion

          public static final java.lang.String getVersion()

      Gets the iText version. This method may only be changed by Paulo Soares and/or Bruno Lowagie.
      Returns:
        iText version

    - #### setJavaScript_onLoad

          public void setJavaScript_onLoad(java.lang.String code)

      Adds a JavaScript onLoad function to the HTML body tag
      Parameters:
        `code` - the JavaScript code to be executed on load of the HTML page

    - #### getJavaScript_onLoad

          public java.lang.String getJavaScript_onLoad()

      Gets the JavaScript onLoad command.
      Returns:
        the JavaScript onLoad command

    - #### setJavaScript_onUnLoad

          public void setJavaScript_onUnLoad(java.lang.String code)

      Adds a JavaScript onUnLoad function to the HTML body tag
      Parameters:
        `code` - the JavaScript code to be executed on unload of the HTML page

    - #### getJavaScript_onUnLoad

          public java.lang.String getJavaScript_onUnLoad()

      Gets the JavaScript onUnLoad command.
      Returns:
        the JavaScript onUnLoad command

    - #### setHtmlStyleClass

          public void setHtmlStyleClass(java.lang.String htmlStyleClass)

      Adds a style class to the HTML body tag
      Parameters:
        `htmlStyleClass` - the style class for the HTML body tag

    - #### getHtmlStyleClass

          public java.lang.String getHtmlStyleClass()

      Gets the style class of the HTML body tag
      Returns:
        the style class of the HTML body tag

    - #### setMarginMirroring

          public boolean setMarginMirroring(boolean marginMirroring)

      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`
      Parameters:
        `marginMirroring` - `true` to mirror the margins
      Returns:
        always `true`

    - #### setMarginMirroringTopBottom

          public boolean setMarginMirroringTopBottom(boolean marginMirroringTopBottom)

      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`
      Parameters:
        `marginMirroringTopBottom` - `true` to mirror the margins
      Returns:
        always `true`
      Since:
        2.1.6

    - #### isMarginMirroring

          public boolean isMarginMirroring()

      Gets the margin mirroring flag.
      Returns:
        the margin mirroring flag