com.lowagie.text.rtf.parser

## Class RtfParser

- java.lang.Object
- - com.lowagie.text.rtf.parser.RtfParser

    public class RtfParser
    extends java.lang.Object

The RtfParser allows the importing of RTF documents or RTF document fragments. The RTF document or fragment is tokenised, font and color definitions corrected and then added to the document being written.

Since:
  2.0.8
Author:
  Mark Hall (Mark.Hall@mail.room3b.eu), Howard Shank (hgshank@yahoo.com)

### Field Summary

Fields
`private long` `binByteCount` When the tokeniser is Binary.
`private long` `binSkipByteCount` When the tokeniser is set to skip bytes, binSkipByteCount is the number of bytes to skip.
`private long` `byteCount` Total bytes read.
`private long` `characterCount` Total clear text characters processed.
`private long` `closeGroupCount` Total } encountered as a close group token.
`private int` `conversionType` Conversion type.
`private long` `ctrlWordCount` Total control words processed.
`private long` `ctrlWordHandledCount` Total control words recognized.
`private long` `ctrlWordNotHandledCount` Total control words not handled.
`private long` `ctrlWordSkippedCount` Total control words skipped.
`private RtfParserState` `currentState` The current parser state.
`private static boolean` `debugParser` Debugging flag.
`static int` `DESTINATION_NORMAL` Destination is normal.
`static int` `DESTINATION_SKIP` Destination is skipping.
`private RtfDestinationMgr` `destinationMgr` The RtfDestinationMgr object to manage destinations.
`private int` `docGroupLevel` The current document group nesting level.
`private Document` `document` The iText document to add the RTF document to.
`private Element` `elem` The iText element to add the RTF document to.
`private java.util.Date` `endDate` End date as a date.
`private long` `endTime` Stop time as a long.
`static int` `errAssertion`
`static int` `errBadTable`
`static int` `errCtrlWordNotFound`
`static int` `errEndOfFile`
`static int` `errInvalidHex`
`static int` `errOK`
`static int` `errStackOverflow`
`static int` `errStackUnderflow`
`static int` `errUnmatchedBrace`
`private int` `groupLevel` The current group nesting level.
`private long` `groupSkippedCount` Total groups skipped.
`private RtfImportMgr` `importMgr` The RtfImportHeader to store imported font and color mappings in.
`private RtfCtrlWordData` `lastCtrlWordParam` Last control word and parameter processed.
`private java.util.ArrayList` `listeners` The `RtfCtrlWordListener`.
`private boolean` `logAppend`
`private java.lang.String` `logFile`
`private boolean` `logging`
`private long` `openGroupCount` Total { encountered as an open group token.
`static int` `PARSER_ERROR` Currently the parser is in an error state.
`static int` `PARSER_ERROR_EOF` The parser reached the end of the file.
`static int` `PARSER_IN_BLIPUID` Currently a blipuid control word is being parsed.
`static int` `PARSER_IN_CHARSET` Currently the RTF charset is being parsed.
`static int` `PARSER_IN_COLOR_TABLE` Currently the RTF color table is being parsed.
`static int` `PARSER_IN_DEFFONT` Currently the RTF deffont is being parsed.
`static int` `PARSER_IN_DOCUMENT` Currently the RTF document content is being parsed.
`static int` `PARSER_IN_FILE_TABLE` Currently the RTF filetbl is being parsed.
`static int` `PARSER_IN_FONT_TABLE` Currently the RTF font table is being parsed.
`static int` `PARSER_IN_FONT_TABLE_INFO` Currently a RTF font table info element is being parsed.
`static int` `PARSER_IN_GENERATOR` Currently the RTF generator is being parsed.
`static int` `PARSER_IN_HEADER` Currently the RTF document header is being parsed.
`static int` `PARSER_IN_INFO_GROUP` Currently the RTF info group is being parsed.
`static int` `PARSER_IN_LATENTSTYLES` Currently the Latent Style and Formatting usage restrictions
`static int` `PARSER_IN_LIST_TABLE` Currently the RTF listtables is being parsed.
`static int` `PARSER_IN_LISTOVERRIDE_TABLE` Currently the RTF listtable override is being parsed.
`static int` `PARSER_IN_OLDCPROPS` Currently the RTF Old Properties.
`static int` `PARSER_IN_OLDPPROPS` Currently the RTF Old Properties.
`static int` `PARSER_IN_OLDSPROPS` Currently the RTF Old Properties.
`static int` `PARSER_IN_OLDTPROPS` Currently the RTF Old Properties.
`static int` `PARSER_IN_PARAGRAPH_GROUP_PROPERTIES`
`static int` `PARSER_IN_PARAGRAPH_TABLE` Currently the RTF Paragraph group properties Table (word 2002)
`static int` `PARSER_IN_PICPROP` Currently a picprop control word is being parsed.
`static int` `PARSER_IN_PICT` Currently a pict control word is being parsed.
`static int` `PARSER_IN_PROT_USER_TABLE` Currently the RTF User Protection Information.
`static int` `PARSER_IN_REV_TABLE` Currently the RTF revtbl is being parsed.
`static int` `PARSER_IN_RSID_TABLE` Currently the RTF rsidtable is being parsed.
`static int` `PARSER_IN_SHPPICT` Currently a shppict control word is being parsed.
`static int` `PARSER_IN_STYLESHEET` Currently the RTF stylesheet is being parsed.
`static int` `PARSER_IN_UNKNOWN` Currently the parser is in an unknown state.
`static int` `PARSER_IN_UPR`
`static int` `PARSER_STARTSTOP` The parser is at the beginning or the end of the file.
`private java.io.PushbackInputStream` `pbReader` The pushback reader to read the input stream.
`private RtfDocument` `rtfDoc` The RtfDocument to add the RTF document or fragment to.
`private RtfCtrlWordMgr` `rtfKeywordMgr` The RtfKeywords that creates and handles keywords that are implemented.
`private int` `skipGroupLevel` When the tokeniser is set to skip to next group, this is the group indentifier to return to.
`private java.util.Stack` `stackState` Stack for saving states for groups
`private java.util.Date` `startDate` Start date as a date.
`private long` `startTime` Start time as a long.
`static int` `TOKENISER_BINARY` The RtfTokeniser is currently reading binary stream.
`static int` `TOKENISER_HEX` The RtfTokeniser is currently reading hex data.
`static int` `TOKENISER_IGNORE_RESULT` The RtfTokeniser ignore result
`static int` `TOKENISER_NORMAL` The RtfTokeniser is in its ground state.
`static int` `TOKENISER_SKIP_BYTES` The last token parsed was a slash.
`static int` `TOKENISER_SKIP_GROUP` The RtfTokeniser is currently tokenising a control word.
`static int` `TOKENISER_STATE_IN_ERROR` The RtfTokeniser is currently in error state
`static int` `TOKENISER_STATE_IN_UNKOWN` The RtfTokeniser is currently in an unkown state
`static int` `TYPE_CONVERT` Conversion type is a conversion.
`static int` `TYPE_IMPORT_FRAGMENT` Conversion type is an import of a partial file/fragment.
`static int` `TYPE_IMPORT_FULL` Conversion type is an import.
`static int` `TYPE_IMPORT_INTO_ELEMENT` Conversion type to import a document into an element.
`static int` `TYPE_UNIDENTIFIED` Conversion type is unknown

### Constructor Summary

Constructors
Constructor and Description
`RtfParser(Document doc)` Constructor

### Method Summary

Methods
`void` `addListener(java.util.EventListener listener)` Adds a `EventListener` to the `RtfCtrlWordMgr`.
`void` `convertRtfDocument(java.io.InputStream readerIn, Document doc)` Converts an RTF document to an iText document.
`int` `getConversionType()` Get the conversion type.
`RtfDestination` `getCurrentDestination()` Get the current destination object.
`RtfDestination` `getDestination(java.lang.String destination)` Get a destination from the map
`Document` `getDocument()` Get the Document object.
`boolean` `getExtendedDestination()` Helper method to indicate if this control word was a \* control word.
`RtfImportMgr` `getImportManager()` Get the RtfImportHeader object.
`int` `getLevel()` Gets the current group level
`java.lang.String` `getLogFile()` Get the logfile name.
`int` `getParserState()` Get the current state of the parser.
`RtfDocument` `getRtfDocument()` Get the RTF Document object.
`RtfParserState` `getState()` Get the state of the parser.
`int` `getTokeniserState()` Get the current state of the tokeniser.
`int` `handleCharacter(int nextChar)` Handles text tokens.
`int` `handleCloseGroup()` Handles close group tokens.
`int` `handleCtrlWord(RtfCtrlWordData ctrlWordData)` Handles control word tokens.
`private void` `handleImportMappings(RtfImportMappings importMappings)` Imports the mappings defined in the RtfImportMappings into the RtfImportHeader of this RtfParser2.
`int` `handleOpenGroup()` Handles open group tokens.
`void` `importRtfDocument(java.io.InputStream readerIn, RtfDocument rtfDoc)` Imports a complete RTF document.
`void` `importRtfDocumentIntoElement(Element elem, java.io.InputStream readerIn, RtfDocument rtfDoc)` Imports a complete RTF document into an Element, i.e.
`void` `importRtfFragment(java.io.InputStream readerIn, RtfDocument rtfDoc, RtfImportMappings importMappings)` Imports an RTF fragment.
`private java.io.PushbackInputStream` `init_Reader(java.io.InputStream readerIn)` Casts the input reader to a PushbackReader or creates a new PushbackReader from the Reader passed in.
`protected void` `init_stats()` Initialize the statistics values.
`private void` `init(int type, RtfDocument rtfDoc, java.io.InputStream readerIn, Document doc, Element elem)` Initialize the parser object values.
`boolean` `isConvert()` Helper method to determin if conversion is TYPE_CONVERT
`boolean` `isImport()` Helper method to determin if conversion is TYPE_IMPORT_FULL or TYPE_IMPORT_FRAGMENT
`boolean` `isImportFragment()` Helper method to determin if conversion is TYPE_IMPORT_FRAGMENT
`boolean` `isImportFull()` Helper method to determin if conversion is TYPE_IMPORT_FULL
`boolean` `isLogAppend()`
`boolean` `isLogging()` Get flag indicating if logging is on or off.
`boolean` `isNewGroup()` Helper method to determine if this is a new group.
`static void` `outputDebug(java.lang.Object doc, int groupLevel, java.lang.String str)`
`private int` `parseChar(int nextChar)` Process the character and send it to the current destination.
`private int` `parseCtrlWord(java.io.PushbackInputStream reader)` Parses a keyword and it's parameter if one exists
`void` `removeListener(java.util.EventListener listener)` Removes a `EventListener` from the `RtfCtrlWordMgr`.
`boolean` `setCurrentDestination(java.lang.String destination)` Set the current destination object for the current state.
`boolean` `setExtendedDestination(boolean value)` Helper method to set the extended control word flag.
`void` `setLogAppend(boolean logAppend)`
`void` `setLogFile(java.lang.String logFile)` Set the logFile name
`void` `setLogFile(java.lang.String logFile, boolean logAppend)` Set the logFile name
`void` `setLogging(boolean logging)` Set flag indicating if logging is on or off
`boolean` `setNewGroup(boolean value)` Helper method to set the new group flag
`int` `setParserState(int newState)` Set the state value of the parser.
`void` `setTokeniserSkipBytes(long numberOfBytesToSkip)` Sets the number of bytes to skip and the state of the tokeniser.
`int` `setTokeniserState(int value)` Set the current state of the tokeniser.
`void` `setTokeniserStateBinary(int binaryCount)` Sets the number of binary bytes.
`void` `setTokeniserStateBinary(long binaryCount)` Sets the number of binary bytes.
`void` `setTokeniserStateNormal()` Set the tokeniser state to skip to the end of the group.
`void` `setTokeniserStateSkipGroup()` Set the tokeniser state to skip to the end of the group.
`void` `tokenise()` Read through the input file and parse the data stream into tokens.

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

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

### Field Detail

#### debugParser

    private static final boolean debugParser

Debugging flag.

See Also:
  Constant Field Values

#### logFile

    private java.lang.String logFile

#### logging

    private boolean logging

#### logAppend

    private boolean logAppend

#### elem

    private Element elem

The iText element to add the RTF document to.

Since:
  2.1.3

#### document

    private Document document

The iText document to add the RTF document to.

#### rtfDoc

    private RtfDocument rtfDoc

The RtfDocument to add the RTF document or fragment to.

#### rtfKeywordMgr

    private RtfCtrlWordMgr rtfKeywordMgr

The RtfKeywords that creates and handles keywords that are implemented.

#### importMgr

    private RtfImportMgr importMgr

The RtfImportHeader to store imported font and color mappings in.

#### destinationMgr

    private RtfDestinationMgr destinationMgr

The RtfDestinationMgr object to manage destinations.

#### stackState

    private java.util.Stack stackState

Stack for saving states for groups

#### currentState

    private RtfParserState currentState

The current parser state.

#### pbReader

    private java.io.PushbackInputStream pbReader

The pushback reader to read the input stream.

#### conversionType

    private int conversionType

Conversion type. Identifies if we are doing in import or a convert.

#### PARSER_IN_HEADER

    public static final int PARSER_IN_HEADER

Currently the RTF document header is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_CHARSET

    public static final int PARSER_IN_CHARSET

Currently the RTF charset is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_DEFFONT

    public static final int PARSER_IN_DEFFONT

Currently the RTF deffont is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_FONT_TABLE

    public static final int PARSER_IN_FONT_TABLE

Currently the RTF font table is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_FONT_TABLE_INFO

    public static final int PARSER_IN_FONT_TABLE_INFO

Currently a RTF font table info element is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_FILE_TABLE

    public static final int PARSER_IN_FILE_TABLE

Currently the RTF filetbl is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_COLOR_TABLE

    public static final int PARSER_IN_COLOR_TABLE

Currently the RTF color table is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_STYLESHEET

    public static final int PARSER_IN_STYLESHEET

Currently the RTF stylesheet is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_LIST_TABLE

    public static final int PARSER_IN_LIST_TABLE

Currently the RTF listtables is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_LISTOVERRIDE_TABLE

    public static final int PARSER_IN_LISTOVERRIDE_TABLE

Currently the RTF listtable override is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_REV_TABLE

    public static final int PARSER_IN_REV_TABLE

Currently the RTF revtbl is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_RSID_TABLE

    public static final int PARSER_IN_RSID_TABLE

Currently the RTF rsidtable is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_GENERATOR

    public static final int PARSER_IN_GENERATOR

Currently the RTF generator is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_PARAGRAPH_TABLE

    public static final int PARSER_IN_PARAGRAPH_TABLE

Currently the RTF Paragraph group properties Table (word 2002)

See Also:
  Constant Field Values

#### PARSER_IN_OLDCPROPS

    public static final int PARSER_IN_OLDCPROPS

Currently the RTF Old Properties.

See Also:
  Constant Field Values

#### PARSER_IN_OLDPPROPS

    public static final int PARSER_IN_OLDPPROPS

Currently the RTF Old Properties.

See Also:
  Constant Field Values

#### PARSER_IN_OLDTPROPS

    public static final int PARSER_IN_OLDTPROPS

Currently the RTF Old Properties.

See Also:
  Constant Field Values

#### PARSER_IN_OLDSPROPS

    public static final int PARSER_IN_OLDSPROPS

Currently the RTF Old Properties.

See Also:
  Constant Field Values

#### PARSER_IN_PROT_USER_TABLE

    public static final int PARSER_IN_PROT_USER_TABLE

Currently the RTF User Protection Information.

See Also:
  Constant Field Values

#### PARSER_IN_LATENTSTYLES

    public static final int PARSER_IN_LATENTSTYLES

Currently the Latent Style and Formatting usage restrictions

See Also:
  Constant Field Values

#### PARSER_IN_PARAGRAPH_GROUP_PROPERTIES

    public static final int PARSER_IN_PARAGRAPH_GROUP_PROPERTIES

See Also:
  Constant Field Values

#### PARSER_IN_DOCUMENT

    public static final int PARSER_IN_DOCUMENT

Currently the RTF document content is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_INFO_GROUP

    public static final int PARSER_IN_INFO_GROUP

Currently the RTF info group is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_UPR

    public static final int PARSER_IN_UPR

See Also:
  Constant Field Values

#### PARSER_IN_SHPPICT

    public static final int PARSER_IN_SHPPICT

Currently a shppict control word is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_PICT

    public static final int PARSER_IN_PICT

Currently a pict control word is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_PICPROP

    public static final int PARSER_IN_PICPROP

Currently a picprop control word is being parsed.

See Also:
  Constant Field Values

#### PARSER_IN_BLIPUID

    public static final int PARSER_IN_BLIPUID

Currently a blipuid control word is being parsed.

See Also:
  Constant Field Values

#### PARSER_STARTSTOP

    public static final int PARSER_STARTSTOP

The parser is at the beginning or the end of the file.

See Also:
  Constant Field Values

#### PARSER_ERROR

    public static final int PARSER_ERROR

Currently the parser is in an error state.

See Also:
  Constant Field Values

#### PARSER_ERROR_EOF

    public static final int PARSER_ERROR_EOF

The parser reached the end of the file.

See Also:
  Constant Field Values

#### PARSER_IN_UNKNOWN

    public static final int PARSER_IN_UNKNOWN

Currently the parser is in an unknown state.

See Also:
  Constant Field Values

#### TYPE_UNIDENTIFIED

    public static final int TYPE_UNIDENTIFIED

Conversion type is unknown

See Also:
  Constant Field Values

#### TYPE_IMPORT_FULL

    public static final int TYPE_IMPORT_FULL

Conversion type is an import. Uses direct content to add everything. This is what the original import does.

See Also:
  Constant Field Values

#### TYPE_IMPORT_FRAGMENT

    public static final int TYPE_IMPORT_FRAGMENT

Conversion type is an import of a partial file/fragment. Uses direct content to add everything.

See Also:
  Constant Field Values

#### TYPE_CONVERT

    public static final int TYPE_CONVERT

Conversion type is a conversion. This uses the document (not rtfDoc) to add all the elements making it a different supported documents depending on the writer used.

See Also:
  Constant Field Values

#### TYPE_IMPORT_INTO_ELEMENT

    public static final int TYPE_IMPORT_INTO_ELEMENT

Conversion type to import a document into an element. i.e. Chapter, Section, Table Cell, etc.

Since:
  2.1.4
See Also:
  Constant Field Values

#### DESTINATION_NORMAL

    public static final int DESTINATION_NORMAL

Destination is normal. Text is processed.

See Also:
  Constant Field Values

#### DESTINATION_SKIP

    public static final int DESTINATION_SKIP

Destination is skipping. Text is ignored.

See Also:
  Constant Field Values

#### TOKENISER_NORMAL

    public static final int TOKENISER_NORMAL

The RtfTokeniser is in its ground state. Any token may follow.

See Also:
  Constant Field Values

#### TOKENISER_SKIP_BYTES

    public static final int TOKENISER_SKIP_BYTES

The last token parsed was a slash.

See Also:
  Constant Field Values

#### TOKENISER_SKIP_GROUP

    public static final int TOKENISER_SKIP_GROUP

The RtfTokeniser is currently tokenising a control word.

See Also:
  Constant Field Values

#### TOKENISER_BINARY

    public static final int TOKENISER_BINARY

The RtfTokeniser is currently reading binary stream.

See Also:
  Constant Field Values

#### TOKENISER_HEX

    public static final int TOKENISER_HEX

The RtfTokeniser is currently reading hex data.

See Also:
  Constant Field Values

#### TOKENISER_IGNORE_RESULT

    public static final int TOKENISER_IGNORE_RESULT

The RtfTokeniser ignore result

See Also:
  Constant Field Values

#### TOKENISER_STATE_IN_ERROR

    public static final int TOKENISER_STATE_IN_ERROR

The RtfTokeniser is currently in error state

See Also:
  Constant Field Values

#### TOKENISER_STATE_IN_UNKOWN

    public static final int TOKENISER_STATE_IN_UNKOWN

The RtfTokeniser is currently in an unkown state

See Also:
  Constant Field Values

#### groupLevel

    private int groupLevel

The current group nesting level.

#### docGroupLevel

    private int docGroupLevel

The current document group nesting level. Used for fragments.

#### binByteCount

    private long binByteCount

When the tokeniser is Binary.

#### binSkipByteCount

    private long binSkipByteCount

When the tokeniser is set to skip bytes, binSkipByteCount is the number of bytes to skip.

#### skipGroupLevel

    private int skipGroupLevel

When the tokeniser is set to skip to next group, this is the group indentifier to return to.

#### errOK

    public static final int errOK

See Also:
  Constant Field Values

#### errStackUnderflow

    public static final int errStackUnderflow

See Also:
  Constant Field Values

#### errStackOverflow

    public static final int errStackOverflow

See Also:
  Constant Field Values

#### errUnmatchedBrace

    public static final int errUnmatchedBrace

See Also:
  Constant Field Values

#### errInvalidHex

    public static final int errInvalidHex

See Also:
  Constant Field Values

#### errBadTable

    public static final int errBadTable

See Also:
  Constant Field Values

#### errAssertion

    public static final int errAssertion

See Also:
  Constant Field Values

#### errEndOfFile

    public static final int errEndOfFile

See Also:
  Constant Field Values

#### errCtrlWordNotFound

    public static final int errCtrlWordNotFound

See Also:
  Constant Field Values

#### byteCount

    private long byteCount

Total bytes read.

#### ctrlWordCount

    private long ctrlWordCount

Total control words processed. Contains both known and unknown. `ctrlWordCount` should equal `ctrlWrodHandlecCount` + `ctrlWordNotHandledCount`ctrlWordSkippedCount

#### openGroupCount

    private long openGroupCount

Total { encountered as an open group token.

#### closeGroupCount

    private long closeGroupCount

Total } encountered as a close group token.

#### characterCount

    private long characterCount

Total clear text characters processed.

#### ctrlWordHandledCount

    private long ctrlWordHandledCount

Total control words recognized.

#### ctrlWordNotHandledCount

    private long ctrlWordNotHandledCount

Total control words not handled.

#### ctrlWordSkippedCount

    private long ctrlWordSkippedCount

Total control words skipped.

#### groupSkippedCount

    private long groupSkippedCount

Total groups skipped. Includes { and } as a group.

#### startTime

    private long startTime

Start time as a long.

#### endTime

    private long endTime

Stop time as a long.

#### startDate

    private java.util.Date startDate

Start date as a date.

#### endDate

    private java.util.Date endDate

End date as a date.

#### lastCtrlWordParam

    private RtfCtrlWordData lastCtrlWordParam

Last control word and parameter processed.

#### listeners

    private java.util.ArrayList listeners

The `RtfCtrlWordListener`.

### Constructor Detail

#### RtfParser

    public RtfParser(Document doc)

Constructor

Parameters:
  `doc` -
Since:
  2.1.3

### Method Detail

#### importRtfDocument

    public void importRtfDocument(java.io.InputStream readerIn,
                         RtfDocument rtfDoc)
                           throws java.io.IOException

Imports a complete RTF document.

Parameters:
  `readerIn` - The Reader to read the RTF document from.
  `rtfDoc` - The RtfDocument to add the imported document to.
Throws:
  `java.io.IOException` - On I/O errors.
Since:
  2.1.3

#### importRtfDocumentIntoElement

    public void importRtfDocumentIntoElement(Element elem,
                                    java.io.InputStream readerIn,
                                    RtfDocument rtfDoc)
                                      throws java.io.IOException

Imports a complete RTF document into an Element, i.e. Chapter, section, Table Cell, etc.

Parameters:
  `elem` - The Element the document is to be imported into.
  `readerIn` - The Reader to read the RTF document from.
  `rtfDoc` - The RtfDocument to add the imported document to.
Throws:
  `java.io.IOException` - On I/O errors.
Since:
  2.1.4

#### convertRtfDocument

    public void convertRtfDocument(java.io.InputStream readerIn,
                          Document doc)
                            throws java.io.IOException

Converts an RTF document to an iText document. Usage: Create a parser object and call this method with the input stream and the iText Document object

Parameters:
  `readerIn` - The Reader to read the RTF file from.
  `doc` - The iText document that the RTF file is to be added to.
Throws:
  `java.io.IOException` - On I/O errors.
Since:
  2.1.3

#### importRtfFragment

    public void importRtfFragment(java.io.InputStream readerIn,
                         RtfDocument rtfDoc,
                         RtfImportMappings importMappings)
                           throws java.io.IOException

Imports an RTF fragment.

Parameters:
  `readerIn` - The Reader to read the RTF fragment from.
  `rtfDoc` - The RTF document to add the RTF fragment to.
  `importMappings` - The RtfImportMappings defining font and color mappings for the fragment.
Throws:
  `java.io.IOException` - On I/O errors.
Since:
  2.1.3

#### addListener

    public void addListener(java.util.EventListener listener)

Adds a `EventListener` to the `RtfCtrlWordMgr`.

Parameters:
  `listener` - the new EventListener.
Since:
  2.1.3

#### removeListener

    public void removeListener(java.util.EventListener listener)

Removes a `EventListener` from the `RtfCtrlWordMgr`.

Parameters:
  `listener` - the EventListener that has to be removed.
Since:
  2.1.3

#### init

    private void init(int type,
            RtfDocument rtfDoc,
            java.io.InputStream readerIn,
            Document doc,
            Element elem)

Initialize the parser object values.

Parameters:
  `type` - Type of conversion or import
  `rtfDoc` - The `RtfDocument`
  `readerIn` - The input stream
  `doc` - The iText `Document`
Since:
  2.1.3

#### init_stats

    protected void init_stats()

Initialize the statistics values.

Since:
  2.1.3

#### init_Reader

    private java.io.PushbackInputStream init_Reader(java.io.InputStream readerIn)

Casts the input reader to a PushbackReader or creates a new PushbackReader from the Reader passed in. The reader is also transformed into a BufferedReader if necessary.

Parameters:
  `readerIn` - The Reader object for the input file.
Returns:
  PushbackReader object
Since:
  2.1.3

#### handleImportMappings

    private void handleImportMappings(RtfImportMappings importMappings)

Imports the mappings defined in the RtfImportMappings into the RtfImportHeader of this RtfParser2.

Parameters:
  `importMappings` - The RtfImportMappings to import.
Since:
  2.1.3

#### handleOpenGroup

    public int handleOpenGroup()

Handles open group tokens. ({)

Returns:
  errOK if ok, other if an error occurred.
Since:
  2.1.3

#### outputDebug

    public static void outputDebug(java.lang.Object doc,
                   int groupLevel,
                   java.lang.String str)

#### handleCloseGroup

    public int handleCloseGroup()

Handles close group tokens. (})

Returns:
  errOK if ok, other if an error occurred.
Since:
  2.1.3

#### handleCtrlWord

    public int handleCtrlWord(RtfCtrlWordData ctrlWordData)

Handles control word tokens. Depending on the current state a control word can lead to a state change. When parsing the actual document contents, certain tabled values are remapped. i.e. colors, fonts, styles, etc.

Parameters:
  `ctrlWordData` - The control word to handle.
Returns:
  errOK if ok, other if an error occurred.
Since:
  2.1.3

#### handleCharacter

    public int handleCharacter(int nextChar)

Handles text tokens. These are either handed on to the appropriate destination handler.

Parameters:
  `nextChar` - The text token to handle.
Returns:
  errOK if ok, other if an error occurred.
Since:
  2.1.3

#### getState

    public RtfParserState getState()

Get the state of the parser.

Returns:
  The current RtfParserState state object.
Since:
  2.1.3

#### getParserState

    public int getParserState()

Get the current state of the parser.

Returns:
  The current state of the parser.
Since:
  2.1.3

#### setParserState

    public int setParserState(int newState)

Set the state value of the parser.

Parameters:
  `newState` - The new state for the parser
Returns:
  The state of the parser.
Since:
  2.1.3

#### getConversionType

    public int getConversionType()

Get the conversion type.

Returns:
  The type of the conversion. Import or Convert.
Since:
  2.1.3

#### getRtfDocument

    public RtfDocument getRtfDocument()

Get the RTF Document object.

Returns:
  Returns the object rtfDoc.
Since:
  2.1.3

#### getDocument

    public Document getDocument()

Get the Document object.

Returns:
  Returns the object rtfDoc.
Since:
  2.1.3

#### getImportManager

    public RtfImportMgr getImportManager()

Get the RtfImportHeader object.

Returns:
  Returns the object importHeader.
Since:
  2.1.3

#### setCurrentDestination

    public boolean setCurrentDestination(java.lang.String destination)

Set the current destination object for the current state.

Parameters:
  `destination` - The destination value to set.
Since:
  2.1.3

#### getCurrentDestination

    public RtfDestination getCurrentDestination()

Get the current destination object.

Returns:
  The current state destination
Since:
  2.1.3

#### getDestination

    public RtfDestination getDestination(java.lang.String destination)

Get a destination from the map

Parameters:
  `destination` - The string destination.
Returns:
  The destination object from the map
Since:
  2.1.3

#### isNewGroup

    public boolean isNewGroup()

Helper method to determine if this is a new group.

Returns:
  true if this is a new group, otherwise it returns false.
Since:
  2.1.3

#### setNewGroup

    public boolean setNewGroup(boolean value)

Helper method to set the new group flag

Parameters:
  `value` - The boolean value to set the flag
Returns:
  The value of newGroup
Since:
  2.1.3

#### tokenise

    public void tokenise()
                  throws java.io.IOException

Read through the input file and parse the data stream into tokens.

Throws:
  `java.io.IOException` - on IO error.
Since:
  2.1.3

#### parseChar

    private int parseChar(int nextChar)

Process the character and send it to the current destination.

Parameters:
  `nextChar` - The character to process
Returns:
  Returns an error code or errOK if no error.
Since:
  2.1.3

#### parseCtrlWord

    private int parseCtrlWord(java.io.PushbackInputStream reader)
                       throws java.io.IOException

Parses a keyword and it's parameter if one exists

Parameters:
  `reader` - This is a pushback reader for file input.
Returns:
  Returns an error code or errOK if no error.
Throws:
  `java.io.IOException` - Catch any file read problem.
Since:
  2.1.3

#### setTokeniserState

    public int setTokeniserState(int value)

Set the current state of the tokeniser.

Parameters:
  `value` - The new state of the tokeniser.
Returns:
  The state of the tokeniser.
Since:
  2.1.3

#### getTokeniserState

    public int getTokeniserState()

Get the current state of the tokeniser.

Returns:
  The current state of the tokeniser.
Since:
  2.1.3

#### getLevel

    public int getLevel()

Gets the current group level

Returns:
  The current group level value.
Since:
  2.1.3

#### setTokeniserStateNormal

    public void setTokeniserStateNormal()

Set the tokeniser state to skip to the end of the group. Sets the state to TOKENISER_SKIP_GROUP and skipGroupLevel to the current group level.

Since:
  2.1.3

#### setTokeniserStateSkipGroup

    public void setTokeniserStateSkipGroup()

Set the tokeniser state to skip to the end of the group. Sets the state to TOKENISER_SKIP_GROUP and skipGroupLevel to the current group level.

Since:
  2.1.3

#### setTokeniserSkipBytes

    public void setTokeniserSkipBytes(long numberOfBytesToSkip)

Sets the number of bytes to skip and the state of the tokeniser.

Parameters:
  `numberOfBytesToSkip` - The numbere of bytes to skip in the file.
Since:
  2.1.3

#### setTokeniserStateBinary

    public void setTokeniserStateBinary(int binaryCount)

Sets the number of binary bytes.

Parameters:
  `binaryCount` - The number of binary bytes.
Since:
  2.1.3

#### setTokeniserStateBinary

    public void setTokeniserStateBinary(long binaryCount)

Sets the number of binary bytes.

Parameters:
  `binaryCount` - The number of binary bytes.
Since:
  2.1.3

#### isConvert

    public boolean isConvert()

Helper method to determin if conversion is TYPE_CONVERT

Returns:
  true if TYPE_CONVERT, otherwise false
Since:
  2.1.3
See Also:
  `TYPE_CONVERT`

#### isImport

    public boolean isImport()

Helper method to determin if conversion is TYPE_IMPORT_FULL or TYPE_IMPORT_FRAGMENT

Returns:
  true if TYPE_CONVERT, otherwise false
Since:
  2.1.3
See Also:
  `TYPE_IMPORT_FULL`, `TYPE_IMPORT_FRAGMENT`

#### isImportFull

    public boolean isImportFull()

Helper method to determin if conversion is TYPE_IMPORT_FULL

Returns:
  true if TYPE_CONVERT, otherwise false
Since:
  2.1.3
See Also:
  `TYPE_IMPORT_FULL`

#### isImportFragment

    public boolean isImportFragment()

Helper method to determin if conversion is TYPE_IMPORT_FRAGMENT

Returns:
  true if TYPE_CONVERT, otherwise false
Since:
  2.1.3
See Also:
  `TYPE_IMPORT_FRAGMENT`

#### getExtendedDestination

    public boolean getExtendedDestination()

Helper method to indicate if this control word was a \* control word.

Returns:
  true if it was a \* control word, otherwise false
Since:
  2.1.3

#### setExtendedDestination

    public boolean setExtendedDestination(boolean value)

Helper method to set the extended control word flag.

Parameters:
  `value` - Boolean to set the value to.
Returns:
  isExtendedDestination.
Since:
  2.1.3

#### getLogFile

    public java.lang.String getLogFile()

Get the logfile name.

Returns:
  the logFile
Since:
  2.1.3

#### setLogFile

    public void setLogFile(java.lang.String logFile)

Set the logFile name

Parameters:
  `logFile` - the logFile to set
Since:
  2.1.3

#### setLogFile

    public void setLogFile(java.lang.String logFile,
                  boolean logAppend)

Set the logFile name

Parameters:
  `logFile` - the logFile to set
Since:
  2.1.3

#### isLogging

    public boolean isLogging()

Get flag indicating if logging is on or off.

Returns:
  the logging
Since:
  2.1.3

#### setLogging

    public void setLogging(boolean logging)

Set flag indicating if logging is on or off

Parameters:
  `logging` - `true` to turn on logging, `false` to turn off logging.
Since:
  2.1.3

#### isLogAppend

    public boolean isLogAppend()

Returns:
  the logAppend
Since:
  2.1.3

#### setLogAppend

    public void setLogAppend(boolean logAppend)

Parameters:
  `logAppend` - the logAppend to set
Since:
  2.1.3