org.apache.fop.render.rtf.rtflib.rtfdoc

## Class RtfFile

- java.lang.Object
- - org.apache.fop.render.rtf.rtflib.rtfdoc.RtfElement
  - - org.apache.fop.render.rtf.rtflib.rtfdoc.RtfContainer
    - - org.apache.fop.render.rtf.rtflib.rtfdoc.RtfFile

-     public class RtfFile
      extends RtfContainer

  Models the top-level structure of an RTF file.

  This work was authored by Bertrand Delacretaz (bdelacretaz@codeconsult.ch), Andreas Putz (a.putz@skynamics.com), and Christopher Scott (scottc@westinghouse.com).

- - ### Field Summary

    - ### Fields inherited from class org.apache.fop.render.rtf.rtflib.rtfdoc.RtfElement

      `attrib, parent, writer`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RtfFile(Writer w)` Create an RTF file that outputs to the given Writer

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `flush()` must be called when done creating the document
    `RtfDocumentArea` | `getDocumentArea()` Call startDocumentArea if needed and return the document area object.
    `RtfListTable` | `getListTable()` Get the list table.
    `RtfPageArea` | `getPageArea()` Call startPageArea if needed and return the page area object.
    `static void` | `main(String[] args)` minimal test and usage example
    `RtfDocumentArea` | `startDocumentArea()` Closes the RtfHeader if not done yet, and starts the document area.
    `org.apache.fop.render.rtf.rtflib.rtfdoc.RtfHeader` | `startHeader()` If called, must be called before startDocumentArea
    `RtfListTable` | `startListTable(RtfAttributes attr)` Creates the list table.
    `RtfPageArea` | `startPageArea()` Closes the RtfHeader if not done yet, and starts the docment area.
    `protected void` | `writeRtfPrefix()` overridden to write RTF prefix code, what comes before our children
    `protected void` | `writeRtfSuffix()` overridden to write RTF suffix code, what comes after our children

    - ### Methods inherited from class org.apache.fop.render.rtf.rtflib.rtfdoc.RtfContainer

      `addChild, findChildren, getChildCount, getChildren, isEmpty, okToWriteRtf, setChildren, setOptions, toString, writeRtfContent`

    - ### Methods inherited from class org.apache.fop.render.rtf.rtflib.rtfdoc.RtfElement

      `close, getParentOfClass, getRtfAttributes, newLine, writeAttributes, writeControlWord, writeControlWordNS, writeExceptionInRtf, writeGroupMark, writeOneAttribute, writeOneAttributeNS, writeRtf, writeStarControlWord, writeStarControlWordNS`

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

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

- - ### Constructor Detail

    - #### RtfFile

          public RtfFile(Writer w)
                  throws IOException

      Create an RTF file that outputs to the given Writer
      Parameters:
        `w` - the Writer to write to
      Throws:
        `IOException` - for I/O problems

  - ### Method Detail

    - #### startHeader

          public org.apache.fop.render.rtf.rtflib.rtfdoc.RtfHeader startHeader()
                                                                        throws IOException,
                                                                               RtfStructureException

      If called, must be called before startDocumentArea
      Returns:
        the new RtfHeader
      Throws:
        `IOException` - for I/O problems
        `RtfStructureException` - for illegal RTF structure

    - #### startListTable

          public RtfListTable startListTable(RtfAttributes attr)
                                      throws IOException

      Creates the list table.
      Parameters:
        `attr` - attributes for the RtfListTable
      Returns:
        the new RtfListTable
      Throws:
        `IOException` - for I/O problems

    - #### getListTable

          public RtfListTable getListTable()

      Get the list table.
      Returns:
        the RtfListTable

    - #### startPageArea

          public RtfPageArea startPageArea()
                                    throws IOException,
                                           RtfStructureException

      Closes the RtfHeader if not done yet, and starts the docment area. Like startDocumentArea, is only called once. This is not optimal, must be able to have multiple page definition, and corresponding Document areas
      Returns:
        the RtfPageArea
      Throws:
        `IOException` - for I/O problems
        `RtfStructureException` - for illegal RTF structure

    - #### getPageArea

          public RtfPageArea getPageArea()
                                  throws IOException,
                                         RtfStructureException

      Call startPageArea if needed and return the page area object.
      Returns:
        the RtfPageArea
      Throws:
        `IOException` - for I/O problems
        `RtfStructureException` - for illegal RTF structure

    - #### startDocumentArea

          public RtfDocumentArea startDocumentArea()
                                            throws IOException,
                                                   RtfStructureException

      Closes the RtfHeader if not done yet, and starts the document area. Must be called once only.
      Returns:
        the RtfDocumentArea
      Throws:
        `IOException` - for I/O problems
        `RtfStructureException` - for illegal RTF structure

    - #### getDocumentArea

          public RtfDocumentArea getDocumentArea()
                                          throws IOException,
                                                 RtfStructureException

      Call startDocumentArea if needed and return the document area object.
      Returns:
        the RtfDocumentArea
      Throws:
        `IOException` - for I/O problems
        `RtfStructureException` - for illegal RTF structure

    - #### writeRtfPrefix

          protected void writeRtfPrefix()
                                 throws IOException

      overridden to write RTF prefix code, what comes before our children
      Overrides:
        `writeRtfPrefix` in class `RtfElement`
      Throws:
        `IOException` - for I/O problems

    - #### writeRtfSuffix

          protected void writeRtfSuffix()
                                 throws IOException

      overridden to write RTF suffix code, what comes after our children
      Overrides:
        `writeRtfSuffix` in class `RtfElement`
      Throws:
        `IOException` - for I/O problems

    - #### flush

          public void flush()
                     throws IOException

      must be called when done creating the document
      Throws:
        `IOException` - for I/O problems

    - #### main

          public static void main(String[] args)
                           throws Exception

      minimal test and usage example
      Parameters:
        `args` - command-line arguments
      Throws:
        `Exception` - for problems

Copyright © 2025 Apache Software Foundation. All rights reserved.