# Form Class

> Represents a PDF form XObject.

- Product: Adobe PDF Library 18
- Language: .NET
- Version: APDFL18.0.5PlusP2e
- HTML page: https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Form
- Version index: https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/llms.txt

```csharp
class Form : Element
```

**Namespace:** `Datalogics::PDFL`

**Inherits from:** [`Element`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Element.md)

## Description

Represents a PDF form XObject.

This is not to be confused with a PDF fillable form; a Form XObject is an object outside the page content stream.

A form XObject is a way to group a number of PDF objects together, into a single container. A Form XObject can hold both text and images, and can be defined once within a PDF file and then reused multiple times in the same PDF, and across multiple pages.

**Referenced by:** [`Annotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Annotation.md), [`CircleAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/CircleAnnotation.md), [`Form`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Form.md), [`FreeTextAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/FreeTextAnnotation.md), [`HighlightAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/HighlightAnnotation.md), [`InkAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/InkAnnotation.md), [`LineAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/LineAnnotation.md), [`LinkAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/LinkAnnotation.md), [`OCREngine`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/OCREngine.md), [`PolyLineAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/PolyLineAnnotation.md), [`PolygonAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/PolygonAnnotation.md), [`Redaction`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Redaction.md), [`SquareAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/SquareAnnotation.md), [`TextMarkupAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/TextMarkupAnnotation.md), [`UnderlineAnnotation`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/UnderlineAnnotation.md)

**Uses types:** [`Clip`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Clip.md), [`ColorProfile`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/enum/ColorProfile.md), [`Content`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Content.md), [`Document`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Document.md), [`Element`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Element.md), [`ElementCloneFlags`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/enum/ElementCloneFlags.md), [`Form`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Form.md), [`GraphicState`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/GraphicState.md), [`Matrix`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Matrix.md), [`OptionalContentContext`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/OptionalContentContext.md), [`OptionalContentMembershipDict`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/OptionalContentMembershipDict.md), [`PDFStream`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/PDFStream.md), [`Rect`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Rect.md), [`RenderIntent`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/enum/RenderIntent.md)

## Constructors

### Form

```csharp
Datalogics.PDFL.Form.Form(Content content, Document document)
```

*constructor*

**Parameters**

- `content` ([`Content`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Content.md)): The content from which to create the form
- `document` ([`Document`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Document.md)): the document in which the image is intended to be used.

Create a form with the given Content.

Specifying the document optimizes data usage for this image within that document.

## Properties

### BoundingBox

```csharp
Rect Datalogics.PDFL.Element.BoundingBox { get; }
```

### Clip

```csharp
Clip Datalogics.PDFL.Element.Clip { get; set; }
```

### Content

```csharp
Content Datalogics.PDFL.Form.Content { get; set; }
```

### GraphicState

```csharp
GraphicState Datalogics.PDFL.Form.GraphicState { get; set; }
```

### Matrix

```csharp
Matrix Datalogics.PDFL.Element.Matrix { get; set; }
```

### OptionalContentMembershipDict

```csharp
OptionalContentMembershipDict Datalogics.PDFL.Form.OptionalContentMembershipDict { get; set; }
```

### Stream

```csharp
PDFStream Datalogics.PDFL.Form.Stream { get; }
```

## Methods

### Clone

```csharp
Element Datalogics.PDFL.Element.Clone(ElementCloneFlags cloneFlags)
```

**Parameters**

- `cloneFlags` ([`ElementCloneFlags`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/enum/ElementCloneFlags.md)): Flags that modify the cloning operation.

**Returns:** [`Element`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Element.md)

The copied element.

Makes a copy of the element.

Make a copy of an element to obtain a new element that has a distinct set of attributes.

Note: TextRun objects may not be cloned.

### Clone

```csharp
new Form Datalogics.PDFL.Form.Clone()
```

**Returns:** `new Form`

The newly created form object.

Creates a new form from an existing form object. Creates a copy of the Form, including the underlying Content.

### ColorConvert

```csharp
Form Datalogics.PDFL.Form.ColorConvert(Document document, ColorProfile prof, RenderIntent intent, bool embed)
```

**Parameters**

- `document` ([`Document`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Document.md)): The document the element belongs to.
- `prof` ([`ColorProfile`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/enum/ColorProfile.md)): The ICC ColorProfile to be applied.
- `intent` ([`RenderIntent`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/enum/RenderIntent.md)): The ICC Rendering Intent for the ColorProfile
- `embed` (`bool`): If true, embed the color space and make the objects calibrated. If it is false and the target profile is CMYK, RGB, or Gray, the colors space of the resulting objects, after conversion, will be DeviceCMYK, DeviceRGB, or DeviceGray, respectively.

**Returns:** [`Form`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Form.md)

A new Form with the applied ICC ColorProfile.

Applies the specified ICC ColorProfile to the objects in the form

### Dispose

```csharp
void Datalogics.PDFL.Element.Dispose()
```

**Returns:** `void`

### IsCurrentlyVisible

```csharp
bool Datalogics.PDFL.Form.IsCurrentlyVisible(OptionalContentContext occ)
```

**Parameters**

- `occ` ([`OptionalContentContext`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/OptionalContentContext.md)): The optional content context to use for visibility state information.

**Returns:** `bool`

true if the form is currently visible.

Tests whether a form is visible in a given optional content context, considering the current ON-OFF states of the optional-content groups in the optional-content dictionary (OCMD) and the dictionary's visibility policy.

If the form occurs more than once within the content, this method only checks the visibility of the first occurrence of the form.

This method determines visibility without considering the visbility of the Content object that the form belongs to. To determine the visibility of a form while taking the Content's visibility into consideration, use the alternate version of this method.

### IsCurrentlyVisible

```csharp
bool Datalogics.PDFL.Form.IsCurrentlyVisible(OptionalContentContext occ, Content content)
```

**Parameters**

- `occ` ([`OptionalContentContext`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/OptionalContentContext.md)): The optional content context to use for visibility state information.
- `content` ([`Content`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Content.md)): The content containing the form, used to also consider the Content's own visibility.

**Returns:** `bool`

true if the form is currently visible.

Tests whether a form is visible in a given optional content context and content.

If the form occurs more than once within the content, this method only checks the visibility of the first occurrence of the form.

### MakeVisible

```csharp
bool Datalogics.PDFL.Form.MakeVisible(OptionalContentContext occ, Content content)
```

**Parameters**

- `occ` ([`OptionalContentContext`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/OptionalContentContext.md)): The optional content context in which the form is made visible.
- `content` ([`Content`](https://docs.datalogics.com/apdfl18/DotNet/APDFL18.0.5PlusP2e/class/Content.md)): The content containing the form.

**Returns:** `bool`

true if the form is successfully made visible in the given context and content, false otherwise

Makes a form visible in a given optional content context and content by manipulating the ON-OFF states of the optional content groups.

### Rotate

```csharp
void Datalogics.PDFL.Element.Rotate(double theta)
```

**Parameters**

- `theta` (`double`): The rotation angle in degrees.

**Returns:** `void`

Rotate an element by theta degrees counterclockwise using the matrix [ cos T sin T -sin T cos T 0 0 ].

### Scale

```csharp
void Datalogics.PDFL.Element.Scale(double sx, double sy)
```

**Parameters**

- `sx` (`double`): The horizontal scale factor.
- `sy` (`double`): The vertical scale factor.

**Returns:** `void`

Scale an element by (sx,sy) units using the matrix [ sx 0 0 sy 0 0 ].

### Translate

```csharp
void Datalogics.PDFL.Element.Translate(double tx, double ty)
```

**Parameters**

- `tx` (`double`): The horizontal translation distance in user space units.
- `ty` (`double`): The vertical translation distance in user space units.

**Returns:** `void`

Translate an element by (tx,ty) units using the matrix [ 1 0 0 1 tx ty ].
