# Form Class

> Represents a PDF form XObject.

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

```java
class Form : Element
```

**Namespace:** `com::datalogics::PDFL`

**Inherits from:** [`Element`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/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/Java/APDFL18.0.5PlusP2a/class/Annotation.md), [`CircleAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/CircleAnnotation.md), [`Form`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Form.md), [`FreeTextAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/FreeTextAnnotation.md), [`HighlightAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/HighlightAnnotation.md), [`InkAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/InkAnnotation.md), [`LineAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/LineAnnotation.md), [`LinkAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/LinkAnnotation.md), [`OCREngine`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/OCREngine.md), [`PolyLineAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/PolyLineAnnotation.md), [`PolygonAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/PolygonAnnotation.md), [`Redaction`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Redaction.md), [`SquareAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/SquareAnnotation.md), [`TextMarkupAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/TextMarkupAnnotation.md), [`UnderlineAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/UnderlineAnnotation.md)

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

## Constructors

### Form

```java
com.datalogics.PDFL.Form.Form(Content content, Document document)
```

*constructor*

**Parameters**

- `content` ([`Content`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Content.md)): The content from which to create the form
- `document` ([`Document`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/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.

## Methods

### clone

```java
Element com.datalogics.PDFL.Element.clone(java.util.EnumSet< ElementCloneFlags > cloneFlags)
```

**Parameters**

- `cloneFlags` (`java.util.EnumSet< ElementCloneFlags >`): Flags that modify the cloning operation.

**Returns:** [`Element`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/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

```java
Form com.datalogics.PDFL.Form.clone()
```

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

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

```java
Form com.datalogics.PDFL.Form.colorConvert(Document document, ColorProfile prof, RenderIntent intent, boolean embed)
```

**Parameters**

- `document` ([`Document`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Document.md)): The document the element belongs to.
- `prof` (`ColorProfile`): The ICC ColorProfile to be applied.
- `intent` (`RenderIntent`): The ICC Rendering Intent for the ColorProfile
- `embed` (`boolean`): 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/Java/APDFL18.0.5PlusP2a/class/Form.md)

A new Form with the applied ICC ColorProfile.

Applies the specified ICC ColorProfile to the objects in the form

### delete

```java
synchronized void com.datalogics.PDFL.Form.delete(Boolean disposing)
```

*protected*

**Parameters**

- `disposing` (`Boolean`)

**Returns:** `synchronized void`

### delete

```java
synchronized void com.datalogics.PDFL.Form.delete()
```

**Returns:** `synchronized void`

### finalize

```java
void com.datalogics.PDFL.Form.finalize()
```

*protected*

**Returns:** `void`

### getBoundingBox

```java
Rect com.datalogics.PDFL.Element.getBoundingBox()
```

**Returns:** [`Rect`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Rect.md)

The bounding box for this element. The coordinates of the bounding box are specified in user space coordinates, relative to the element's Content. Note that user space coordinates correspond to unrotated pages; any rotation specified in the page dictionary is not taken into account.

The bounding box for this element.

The bounding box is a rectangle that is guaranteed to encompass the element, but it is not guaranteed to be the smallest box that could contain the element. For example, if the element is a Path that contains an arc, the bounding box encompasses the bezier control points, and not just the curve itself.

### getClip

```java
Clip com.datalogics.PDFL.Element.getClip()
```

**Returns:** [`Clip`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Clip.md)

- The current Clip for this Element.

Gets the current Clip for an Element.

### getContent

```java
Content com.datalogics.PDFL.Form.getContent()
```

**Returns:** [`Content`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Content.md)

The Content contained in the form.

### getGraphicState

```java
GraphicState com.datalogics.PDFL.Form.getGraphicState()
```

**Returns:** [`GraphicState`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/GraphicState.md)

Get the graphic state of this Form.

May return null if this element does not have a GraphicState.

### getMatrix

```java
Matrix com.datalogics.PDFL.Element.getMatrix()
```

**Returns:** [`Matrix`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Matrix.md)

The transformation matrix for the element.

### getOptionalContentMembershipDict

```java
OptionalContentMembershipDict com.datalogics.PDFL.Form.getOptionalContentMembershipDict()
```

**Returns:** [`OptionalContentMembershipDict`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/OptionalContentMembershipDict.md)

the OptionalContentMembershipDict

The OptionalContentMembershipDict property for this Form.

Setting this property will attach the Form to an OptionalContentMembershipDict; it will then be associated with the OptionalContentGroups and be subject to the VisibilityPolicy and VisibilityExpression of that MembershipDict.

By setting this property to null, the Form is detached from any OptionalContentMembershipDict.

### getStream

```java
PDFStream com.datalogics.PDFL.Form.getStream()
```

**Returns:** [`PDFStream`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/PDFStream.md)

The stream associated with the form.

Get the stream associated with the form.

### isCurrentlyVisible

```java
boolean com.datalogics.PDFL.Form.isCurrentlyVisible(OptionalContentContext occ)
```

**Parameters**

- `occ` ([`OptionalContentContext`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/OptionalContentContext.md))

**Returns:** `boolean`

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

```java
boolean com.datalogics.PDFL.Form.isCurrentlyVisible(OptionalContentContext occ, Content content)
```

**Parameters**

- `occ` ([`OptionalContentContext`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/OptionalContentContext.md))
- `content` ([`Content`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Content.md))

**Returns:** `boolean`

true if the form is currently visible.

Tests whether an 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

```java
boolean com.datalogics.PDFL.Form.makeVisible(OptionalContentContext occ, Content content)
```

**Parameters**

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

**Returns:** `boolean`

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

```java
void com.datalogics.PDFL.Element.rotate(double theta)
```

**Parameters**

- `theta` (`double`)

**Returns:** `void`

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

### scale

```java
void com.datalogics.PDFL.Element.scale(double sx, double sy)
```

**Parameters**

- `sx` (`double`)
- `sy` (`double`)

**Returns:** `void`

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

### setClip

```java
void com.datalogics.PDFL.Element.setClip(Clip clip)
```

**Parameters**

- `clip` ([`Clip`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Clip.md)): The clip to set as the current clip for this element.

**Returns:** `void`

Sets the current Clip for an Element.

### setContent

```java
void com.datalogics.PDFL.Form.setContent(Content content)
```

**Parameters**

- `content` ([`Content`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Content.md))

**Returns:** `void`

The Content contained in the form.

### setGraphicState

```java
void com.datalogics.PDFL.Form.setGraphicState(GraphicState gstate)
```

**Parameters**

- `gstate` ([`GraphicState`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/GraphicState.md)): the new/updated Graphic State for the Form.

**Returns:** `void`

Set the Graphic State of this Form.

### setMatrix

```java
void com.datalogics.PDFL.Element.setMatrix(Matrix matrix)
```

**Parameters**

- `matrix` ([`Matrix`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/Matrix.md)): the transformation matrix for the element.

**Returns:** `void`

Set the transformation matrix for the element.

### setOptionalContentMembershipDict

```java
void com.datalogics.PDFL.Form.setOptionalContentMembershipDict(OptionalContentMembershipDict ocmd)
```

**Parameters**

- `ocmd` ([`OptionalContentMembershipDict`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2a/class/OptionalContentMembershipDict.md)): the OptionalContentMembershipDict

**Returns:** `void`

The OptionalContentMembershipDict property for this Form.

Setting this property will attach the Form to an OptionalContentMembershipDict; it will then be associated with the OptionalContentGroups and be subject to the VisibilityPolicy and VisibilityExpression of that MembershipDict.

By setting this property to null, the Form is detached from any OptionalContentMembershipDict.

### translate

```java
void com.datalogics.PDFL.Element.translate(double tx, double ty)
```

**Parameters**

- `tx` (`double`)
- `ty` (`double`)

**Returns:** `void`

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