# General Information

The RadPdfProcessing document model defines a hierarchy of elements that represent PDF content. The following sections describe the element structure and how to add content.

## Document Elements

[RadFixedDocument](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/radfixeddocument) is the root element of all document elements. All document elements inherit from the `FixedDocumentElementBase` abstract class. The following diagram describes the hierarchy in RadPdfProcessing:

* **FixedDocumentElementBase**
  * [RadFixedDocument](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/radfixeddocument)

  * [RadFixedPage](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/radfixedpage): IContentRootElement

  * [Annotation](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/overview)
    * ContentAnnotationBase
      * [Widget](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/widgets)
        * [PushButtonWidget](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/widgets#pushbuttonwidget-class)
        * [SignatureWidget](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/widgets#signaturewidget-class)
        * [TwoStatesButtonWidget](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/widgets#twostatesbuttonwidget-class)
          * [RadioButtonWidget](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/widgets#radiobuttonwidget-class)
        * VariableContentWidget

      * ContentAnnotation
        * [MarkupAnnotation](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/overview)
          * [LineAnnotation](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/line)
          * [StampAnnotation](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/stamp)
          * [TextAnnotation](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/text)
          * [TextMarkupAnnotation](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/text-markup)

  * Destination
    * BoundingRectangleFit
    * BoundingRectangleHorizontalFit
    * BoundingRectangleVerticalFit
    * Location
    * PageFit
    * PageHorizontalFit
    * PageVerticalFit
    * RectangleFit

  * ContentElementBase
    * Clipping
    * PositionContentElement
      * [Form](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/form)
      * [Image](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/image)
      * [Path](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/path)
      * [TextFragment](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/textfragment)



## Composition of Document Elements

`RadFixedDocument` represents a tree of [RadFixedPage](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/radfixedpage) instances where the fixed content is hosted. The following nested list describes the composition of the fixed content. Indentation indicates which elements or collections belong to each parent.

* RadFixedDocument
  * [Pages](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/radfixedpage)
    * [Annotations](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/annotations/overview)
    * [Page Actions](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/actions/js-actions/action-collections#pageactioncollection) (PageActionCollection)
  * [NamedDestinations](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/named-destinations)
  * [EmbeddedFiles](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/features/embedded-file-streams/embedded-file-streams)
  * [AcroForm](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/interactive-forms/acroform)
    * [FormFields](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/interactive-forms/form-fields/formfields)
  * [Bookmarks](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/features/bookmarks)
  * [Document Actions](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/actions/overview) (DocumentActionCollection)



## Creating or Editing Document Content

The RadPdfProcessing library provides an API for editing existing or creating new documents. You can use the following editors:

* [RadFixedDocumentEditor](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/editing/radfixeddocumenteditor): This editor is suitable for creating new documents or adding content to existing documents. It allows you to add elements in a flow-like manner without explicitly setting positions and sizes. The `RadFixedDocumentEditor` arranges document elements automatically and separates the content on different pages when needed.

* [FixedContentEditor](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/editing/fixedcontenteditor): This editor provides the flexibility of the PDF format. It is suitable for adding content to existing pages. With it, you must specify the exact position of each new element and manually separate the content on different pages when needed.

## See Also

* [RadFixedDocument](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/radfixeddocument)
* [RadFixedPage](https://www.telerik.com/document-processing-libraries/documentation/libraries/radpdfprocessing/model/radfixedpage)
