com.lowagie.text.rtf.document

## Class RtfDocument

- java.lang.Object
- - com.lowagie.text.rtf.RtfElement
  - - com.lowagie.text.rtf.document.RtfDocument

- All Implemented Interfaces:
    RtfBasicElement, RtfElementInterface

      public class RtfDocument
      extends RtfElement

  The RtfDocument stores all document related data and also the main data stream. INTERNAL CLASS - NOT TO BE USED DIRECTLY
  Since:
    1.x
  Version:
    $Id$
  Author:
    Mark Hall (Mark.Hall@mail.room3b.eu), Todd Bush [Tab support], Thomas Bickel (tmb99@inode.at)

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private boolean` | `autogenerateTOCEntries` Whether to automatically generate TOC entries for Chapters and Sections.
    `private RtfDataCache` | `data` Stores the actual document data
    `private RtfDocumentHeader` | `documentHeader` The RtfDocumentHeader that handles all document header methods
    `private RtfDocumentSettings` | `documentSettings` The RtfDocumentSettings for this RtfDocument.
    `private static byte[]` | `FSC_BACKSLASH`
    `private static byte[]` | `FSC_HEX_PREFIX`
    `private static byte[]` | `FSC_LINE`
    `private static byte[]` | `FSC_NEWPAGE`
    `private static byte[]` | `FSC_PAGE_PAR`
    `private static byte[]` | `FSC_PAR`
    `private static byte[]` | `FSC_TAB`
    `private static byte[]` | `FSC_UNI_PREFIX`
    `private RtfBasicElement` | `lastElementWritten` The last RtfBasicElement that was added directly to the RtfDocument.
    `private RtfMapper` | `mapper` The RtfMapper to use in this RtfDocument
    `private java.util.ArrayList` | `previousRandomInts` Stores integers that have been generated as unique random numbers
    `private static byte[]` | `RTF_DOCUMENT` Constant for the Rtf document start

    - ### Fields inherited from class com.lowagie.text.rtf.RtfElement

      `document, inHeader, inTable`

    - ### Fields inherited from interface com.lowagie.text.rtf.RtfBasicElement

      `CLOSE_GROUP, COMMA_DELIMITER, DELIMITER, OPEN_GROUP, TWIPS_FACTOR`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RtfDocument()` The default constructor for a RtfDocument

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(RtfBasicElement element)` Adds an element to the rtf document
    `void` | `filterSpecialChar(java.io.OutputStream out, java.lang.String str, boolean useHex, boolean softLineBreaks)` Writes the given string to the given `OutputStream` encoding the string characters.
    `boolean` | `getAutogenerateTOCEntries()` Get whether to automatically generate table of contents entries
    `RtfDocumentHeader` | `getDocumentHeader()` Gets the RtfDocumentHeader of this RtfDocument
    `RtfDocumentSettings` | `getDocumentSettings()` Gets the RtfDocumentSettings that specify how the rtf document is generated.
    `RtfBasicElement` | `getLastElementWritten()` Gets the last RtfBasicElement that was directly added to the RtfDocument.
    `RtfMapper` | `getMapper()` Gets the RtfMapper object of this RtfDocument
    `int` | `getRandomInt()` Generates a random integer that is unique with respect to the document.
    `void` | `open()` Opens the RtfDocument and initializes the data cache.
    `void` | `outputDebugLinebreak(java.io.OutputStream result)` Helper method outputs linebreak in document if debugging is turned on.
    `void` | `setAutogenerateTOCEntries(boolean autogenerate)` Whether to automagically generate table of contents entries when adding Chapters or Sections.
    `private static boolean` | `subMatch(java.lang.String str, int soff, byte[] m)` Returns `true` if `m.length` characters in `str`, starting at offset `soff` match the bytes in the given array `m`.
    `void` | `writeContent(java.io.OutputStream out)` unused
    `void` | `writeDocument(java.io.OutputStream out)` Writes the document

    - ### Methods inherited from class com.lowagie.text.rtf.RtfElement

      `intToByteArray, isInTable, setInHeader, setInTable, setRtfDocument`

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

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

- - ### Field Detail

    - #### data

          private RtfDataCache data

      Stores the actual document data

    - #### mapper

          private RtfMapper mapper

      The RtfMapper to use in this RtfDocument

    - #### documentHeader

          private RtfDocumentHeader documentHeader

      The RtfDocumentHeader that handles all document header methods

    - #### previousRandomInts

          private java.util.ArrayList previousRandomInts

      Stores integers that have been generated as unique random numbers

    - #### autogenerateTOCEntries

          private boolean autogenerateTOCEntries

      Whether to automatically generate TOC entries for Chapters and Sections. Defaults to false

    - #### documentSettings

          private RtfDocumentSettings documentSettings

      The RtfDocumentSettings for this RtfDocument.

    - #### lastElementWritten

          private RtfBasicElement lastElementWritten

      The last RtfBasicElement that was added directly to the RtfDocument.

    - #### RTF_DOCUMENT

          private static final byte[] RTF_DOCUMENT

      Constant for the Rtf document start

    - #### FSC_LINE

          private static final byte[] FSC_LINE

    - #### FSC_PAR

          private static final byte[] FSC_PAR

    - #### FSC_TAB

          private static final byte[] FSC_TAB

    - #### FSC_PAGE_PAR

          private static final byte[] FSC_PAGE_PAR

    - #### FSC_NEWPAGE

          private static final byte[] FSC_NEWPAGE

    - #### FSC_BACKSLASH

          private static final byte[] FSC_BACKSLASH

    - #### FSC_HEX_PREFIX

          private static final byte[] FSC_HEX_PREFIX

    - #### FSC_UNI_PREFIX

          private static final byte[] FSC_UNI_PREFIX

  - ### Constructor Detail

    - #### RtfDocument

          public RtfDocument()

      The default constructor for a RtfDocument

  - ### Method Detail

    - #### writeContent

          public void writeContent(java.io.OutputStream out)
                            throws java.io.IOException

      unused
      Specified by:
        `writeContent` in interface `RtfBasicElement`
      Specified by:
        `writeContent` in class `RtfElement`
      Parameters:
        `out` - The `OutputStream` to write the content to
      Throws:
        `java.io.IOException`

    - #### writeDocument

          public void writeDocument(java.io.OutputStream out)

      Writes the document
      Parameters:
        `out` - The `OutputStream` to write the RTF document to.

    - #### open

          public void open()

      Opens the RtfDocument and initializes the data cache. If the data cache is set to CACHE_DISK, but the cache cannot be initialized then the memory cache is used.

    - #### add

          public void add(RtfBasicElement element)

      Adds an element to the rtf document
      Parameters:
        `element` - The element to add

    - #### getMapper

          public RtfMapper getMapper()

      Gets the RtfMapper object of this RtfDocument
      Returns:
        The RtfMapper

    - #### getRandomInt

          public int getRandomInt()

      Generates a random integer that is unique with respect to the document. Will not return a number between -1 and -5 because some values in that range are invalid.
      Returns:
        A random int

    - #### getDocumentHeader

          public RtfDocumentHeader getDocumentHeader()

      Gets the RtfDocumentHeader of this RtfDocument
      Returns:
        The RtfDocumentHeader of this RtfDocument

    - #### filterSpecialChar

          public void filterSpecialChar(java.io.OutputStream out,
                               java.lang.String str,
                               boolean useHex,
                               boolean softLineBreaks)
                                 throws java.io.IOException

      Writes the given string to the given `OutputStream` encoding the string characters.
      Parameters:
        `out` - destination OutputStream
        `str` - string to write
        `useHex` - if `true` hex encoding characters is preferred to unicode encoding if possible
        `softLineBreaks` - if `true` return characters are written as soft line breaks
      Throws:
        `java.io.IOException`

    - #### subMatch

          private static boolean subMatch(java.lang.String str,
                         int soff,
                         byte[] m)

      Returns `true` if `m.length` characters in `str`, starting at offset `soff` match the bytes in the given array `m`.
      Parameters:
        `str` - the string to search for a match
        `soff` - the starting offset in str
        `m` - the array to match
      Returns:
        `true` if there is match

    - #### setAutogenerateTOCEntries

          public void setAutogenerateTOCEntries(boolean autogenerate)

      Whether to automagically generate table of contents entries when adding Chapters or Sections.
      Parameters:
        `autogenerate` - Whether to automatically generate TOC entries

    - #### getAutogenerateTOCEntries

          public boolean getAutogenerateTOCEntries()

      Get whether to automatically generate table of contents entries
      Returns:
        Whether to automatically generate TOC entries

    - #### getDocumentSettings

          public RtfDocumentSettings getDocumentSettings()

      Gets the RtfDocumentSettings that specify how the rtf document is generated.
      Returns:
        The current RtfDocumentSettings.

    - #### getLastElementWritten

          public RtfBasicElement getLastElementWritten()

      Gets the last RtfBasicElement that was directly added to the RtfDocument.
      Returns:
        The last RtfBasicElement that was directly added to the RtfDocument.

    - #### outputDebugLinebreak

          public final void outputDebugLinebreak(java.io.OutputStream result)
                                          throws java.io.IOException

      Helper method outputs linebreak in document if debugging is turned on.
      Parameters:
        `result` - the OutputStream to write the linebreak to.
      Throws:
        `java.io.IOException`
      Since:
        2.1.3