# Annotation Class

> Associates an object with its location on a page of a PDF document.

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

```java
class Annotation
```

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

**Derived classes:** [`CircleAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/CircleAnnotation.md), [`FreeTextAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/FreeTextAnnotation.md), [`InkAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/InkAnnotation.md), [`LineAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/LineAnnotation.md), [`LinkAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/LinkAnnotation.md), [`PolyLineAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/PolyLineAnnotation.md), [`PolygonAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/PolygonAnnotation.md), [`Redaction`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Redaction.md), [`SquareAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/SquareAnnotation.md), [`TextMarkupAnnotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/TextMarkupAnnotation.md)

## Description

Associates an object with its location on a page of a PDF document. An annotation associates an object such as a note, sound, or movie with a location on a page of a PDF document, or provides a way to interact with the user by means of the mouse and keyboard.

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

**Uses types:** [`Annotation`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Annotation.md), [`Color`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Color.md), [`Form`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Form.md), [`OptionalContentContext`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/OptionalContentContext.md), [`OptionalContentMembershipDict`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/OptionalContentMembershipDict.md), [`PDFDict`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/PDFDict.md), [`Page`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Page.md), [`Rect`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Rect.md)

## Constructors

### Annotation

```java
com.datalogics.PDFL.Annotation.Annotation(Page page, String subtype, Rect initialRect)
```

*constructor*

**Parameters**

- `page` ([`Page`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Page.md)): The page to which the annotation is added.
- `subtype` (`String`): The type of the annotation.
- `initialRect` ([`Rect`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Rect.md)): A rectangle specifying the annotation's bounds, specified in user space coordinates.

Create a new Annotation at the end of a page's annotation array. To create an annotation and place it elsewhere in the page's annotation array, use the version of the constructor that takes an array position.

### Annotation

```java
com.datalogics.PDFL.Annotation.Annotation(Page page, String subtype, Rect initialRect, int addAfter)
```

*constructor*

**Parameters**

- `page` ([`Page`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Page.md)): The page to which the annotation is added.
- `subtype` (`String`): The type of the annotation.
- `initialRect` ([`Rect`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Rect.md)): A rectangle specifying the annotation's bounds, specified in user space coordinates.
- `addAfter` (`int`): Where to add the annotation in the page's annotation array.

Create a new Annotation at a specific index in the page's annotation array.

## Methods

### delete

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

*protected*

**Parameters**

- `disposing` (`Boolean`)

**Returns:** `synchronized void`

### delete

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

**Returns:** `synchronized void`

### equals

```java
boolean com.datalogics.PDFL.Annotation.equals(Object rhs)
```

**Parameters**

- `rhs` (`Object`)

**Returns:** `boolean`

### finalize

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

*protected*

**Returns:** `void`

### generateAppearance

```java
Form com.datalogics.PDFL.Annotation.generateAppearance()
```

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

A Form representing the visual appearance, or null if the appearance could not be generated.

Generate a new appearance stream with the current annotation properties. The resulting Form can then be used to set the annotation's appearance, such as by calling SetNormalAppearance.

### getAnnotationFeatureLevel

```java
double com.datalogics.PDFL.Annotation.getAnnotationFeatureLevel()
```

**Returns:** `double`

The minimum PDF version level (e.g. 1.3, 1.4, or 1.5).

The minimum PDF version necessary to support the features used in this annotation.

### getColor

```java
Color com.datalogics.PDFL.Annotation.getColor()
```

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

The annotation's color.

The color of the annotation.

### getContents

```java
String com.datalogics.PDFL.Annotation.getContents()
```

**Returns:** `String`

The annotation's text contents.

The text contents of the annotation. The text to be displayed for the annotation or, if this type of annotation does not display text, an alternate description of the annotation's contents in human-readable form.

### getFlags

```java
java.util.EnumSet< AnnotationFlags > com.datalogics.PDFL.Annotation.getFlags()
```

**Returns:** `java.util.EnumSet< AnnotationFlags >`

The annotation's flags.

The flags for the annotation.

### getInteriorColor

```java
Color com.datalogics.PDFL.Annotation.getInteriorColor()
```

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

The interior fill color, or null if no interior color is set.

The interior color with which to fill the annotation's rectangle or circle. The color of the border itself can be retrieved from Annotation.Color.

### getNormalAppearance

```java
Form com.datalogics.PDFL.Annotation.getNormalAppearance()
```

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

A Form representing the annotation's normal appearance, or null if no normal appearance has been set.

The normal appearance of the annotation, represented as a Form XObject.

### getOpacity

```java
double com.datalogics.PDFL.Annotation.getOpacity()
```

**Returns:** `double`

The opacity value for this annotation.

The constant opacity value used in painting a Markup annotation. Opacity is a range from 0.0 (fully transparent) to 1.0 (fully opaque).

### getOptionalContentMembershipDict

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

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

the OptionalContentMembershipDict

The OptionalContentMembershipDict property for this Annotation.

Setting this property will attach the Annotation 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 Annotation is detached from any OptionalContentMembershipDict.

### getPDFDict

```java
PDFDict com.datalogics.PDFL.Annotation.getPDFDict()
```

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

The PDFDict associated with this annotation.

The underlying PDF dictionary for this annotation. Retrieves the PDFDict representation of this annotation object.

### getRect

```java
Rect com.datalogics.PDFL.Annotation.getRect()
```

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

The annotation's bounding rectangle in user space coordinates.

The size and location of the annotation on its page.

### getSubtype

```java
String com.datalogics.PDFL.Annotation.getSubtype()
```

**Returns:** `String`

The subtype string (e.g. "Circle", "Square", "Line").

The annotation's subtype.

### getTitle

```java
String com.datalogics.PDFL.Annotation.getTitle()
```

**Returns:** `String`

The title string.

The title of the annotation.

### hasRichTextData

```java
boolean com.datalogics.PDFL.Annotation.hasRichTextData()
```

**Returns:** `boolean`

true if the annotation contains Rich Text String content.

Checks the annotation for Rich Text String content (PDFReference 1.7 Section 8.6.2). Annotations that contain Rich Text String content and do not have a normal appearance set will not be visible when rendering the page.

### isCurrentlyVisible

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

**Parameters**

- `occ` ([`OptionalContentContext`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/OptionalContentContext.md)): The optional content context in which to check visibility.

**Returns:** `boolean`

true if the annotation is currently visible.

Tests whether an annotation 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 annotation occurs more than once within the content, this method only checks the visibility of the first occurrence of the annotation.

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

### setAnnotationFeatureLevel

```java
void com.datalogics.PDFL.Annotation.setAnnotationFeatureLevel(double featureLevel)
```

**Parameters**

- `featureLevel` (`double`): The target PDF version level. Features requiring a higher version will be removed.

**Returns:** `void`

Removes features not supported in the supplied version number.

### setColor

```java
void com.datalogics.PDFL.Annotation.setColor(Color color)
```

**Parameters**

- `color` ([`Color`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Color.md)): The new color to set.

**Returns:** `void`

The color of the annotation.

### setContents

```java
void com.datalogics.PDFL.Annotation.setContents(String contents)
```

**Parameters**

- `contents` (`String`): The new text contents.

**Returns:** `void`

The text contents of the annotation. The text to be displayed for the annotation or, if this type of annotation does not display text, an alternate description of the annotation's contents in human-readable form.

### setFlags

```java
void com.datalogics.PDFL.Annotation.setFlags(java.util.EnumSet< AnnotationFlags > flags)
```

**Parameters**

- `flags` (`java.util.EnumSet< AnnotationFlags >`): The new annotation flags to set.

**Returns:** `void`

The flags for the annotation.

### setInteriorColor

```java
void com.datalogics.PDFL.Annotation.setInteriorColor(Color color)
```

**Parameters**

- `color` ([`Color`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Color.md)): The new interior fill color. Pass null to remove the interior color.

**Returns:** `void`

The interior color with which to fill the annotation's rectangle or circle. Only RGB colors are allowed.

The color of the border itself can be retrieved from Annotation.Color.

### setNormalAppearance

```java
void com.datalogics.PDFL.Annotation.setNormalAppearance(Form form)
```

**Parameters**

- `form` ([`Form`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Form.md)): The Form to use as the annotation's normal appearance.

**Returns:** `void`

The normal appearance of the annotation, represented as a Form XObject.

### setOpacity

```java
void com.datalogics.PDFL.Annotation.setOpacity(double opacityValue)
```

**Parameters**

- `opacityValue` (`double`): The new opacity value to set.

**Returns:** `void`

The constant opacity value used in painting a Markup annotation. Opacity is a range from 0.0 (fully transparent) to 1.0 (fully opaque).

### setOptionalContentMembershipDict

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

**Parameters**

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

**Returns:** `void`

The OptionalContentMembershipDict property for this Annotation.

Setting this property will attach the Annotation 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 Annotation is detached from any OptionalContentMembershipDict.

### setRect

```java
void com.datalogics.PDFL.Annotation.setRect(Rect rect)
```

**Parameters**

- `rect` ([`Rect`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Rect.md)): The new bounding rectangle in user space coordinates.

**Returns:** `void`

The size and location of the annotation on its page.

### setTitle

```java
void com.datalogics.PDFL.Annotation.setTitle(String title)
```

**Parameters**

- `title` (`String`): The new title string.

**Returns:** `void`

The title of the annotation.

### toString

```java
String com.datalogics.PDFL.Annotation.toString()
```

**Returns:** `String`

A string describing this annotation, including its type and rectangle.

Returns a string representation of this annotation.
