# InkAnnotation Class

> A type of annotation allowing a user to edit a PDF document.

- Product: Adobe PDF Library 21
- Language: .NET Framework
- Version: APDFL21.0.0PlusP1e
- HTML page: https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/InkAnnotation
- Version index: https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/llms.txt

```csharp
class InkAnnotation : Annotation
```

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

**Inherits from:** [`Annotation`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Annotation.md)

## Description

A type of annotation allowing a user to edit a PDF document.

Ink annotations in a PDF file allow a user to work with a PDF document displayed on a screen just as if it were on paper, such as scribbling notes in the margins, or circling or underlining text. These types of annotations require a stylus or pen used on a tablet device.

**Uses types:** [`AnnotationFlags`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/enum/AnnotationFlags.md), [`Color`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Color.md), [`Form`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Form.md), [`OptionalContentContext`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/OptionalContentContext.md), [`OptionalContentMembershipDict`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/OptionalContentMembershipDict.md), [`PDFDict`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/PDFDict.md), [`Page`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Page.md), [`Point`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Point.md), [`Rect`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Rect.md)

## Constructors

### InkAnnotation

```csharp
Datalogics.PDFL.InkAnnotation.InkAnnotation(Page page, Rect initialRect)
```

*constructor*

**Parameters**

- `page` ([`Page`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Page.md)): The page to which the InkAnnotation is added.
- `initialRect` ([`Rect`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Rect.md)): A rectangle specifying the annotation's bounds, specified in user space coordinates.

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

### InkAnnotation

```csharp
Datalogics.PDFL.InkAnnotation.InkAnnotation(Page page, Rect initialRect, int addAfter)
```

*constructor*

**Parameters**

- `page` ([`Page`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Page.md)): The page to which the annotation is added.
- `initialRect` ([`Rect`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/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. To add the annotation to the end of the array, pass a value of -2 or use the alternate version of this constructor that does not take an index (this is generally what you should do unless you have a need to place the annotation at a special location in the array). Passing a value of -1 adds the annotation to the beginning of the array. Passing other negative values produces undefined results.

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

## Properties

### AnnotationFeatureLevel

```csharp
double Datalogics.PDFL.Annotation.AnnotationFeatureLevel { get; set; }
```

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

### BorderStyle

```csharp
string Datalogics.PDFL.InkAnnotation.BorderStyle { get; set; }
```

The border style.

Can be one of:

• S - Solid

• D - Dashed. The dash pattern is specified as an array (see DashPattern)

• B - Beveled

• I - Inset

• U - Underline

Other border styles may be defined in the future. Default is "S"

### BorderStyleDashPattern

```csharp
System.Collections.Generic.IList<System.Double> Datalogics.PDFL.InkAnnotation.BorderStyleDashPattern { get; set; }
```

An array defining a pattern of dashes and gaps to be used in drawing a dashed border (border style D).

The dash array is a series of numbers that specify the lengths of alternating dashes and gaps. Lengths must be nonnegative, and are expressed in user space units.

Default value is [3]

### BorderStyleWidth

```csharp
double Datalogics.PDFL.InkAnnotation.BorderStyleWidth { get; set; }
```

The border width in points.

If this value is 0, no border is drawn. The default is 1.0.

### Color

```csharp
Color Datalogics.PDFL.Annotation.Color { get; set; }
```

The color of the annotation.

### Contents

```csharp
string Datalogics.PDFL.Annotation.Contents { get; set; }
```

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.

### Flags

```csharp
AnnotationFlags Datalogics.PDFL.Annotation.Flags { get; set; }
```

The flags for the annotation.

### InteriorColor

```csharp
Color Datalogics.PDFL.Annotation.InteriorColor { get; 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.

### NormalAppearance

```csharp
Form Datalogics.PDFL.Annotation.NormalAppearance { get; set; }
```

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

### NumScribbles

```csharp
int Datalogics.PDFL.InkAnnotation.NumScribbles { get; }
```

The number of scribbles in the ink annotation.

### Opacity

```csharp
double Datalogics.PDFL.Annotation.Opacity { get; set; }
```

The constant opacity value used in painting a Markup annotation.

Opacity is a range from 0.0 (fully transparent) to 1.0 (fully opaque).

### OptionalContentMembershipDict

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

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.

### PDFDict

```csharp
PDFDict Datalogics.PDFL.Annotation.PDFDict { get; }
```

The underlying PDF dictionary for this annotation.

Retrieves the PDFDict representation of this annotation object.

### Rect

```csharp
Rect Datalogics.PDFL.Annotation.Rect { get; set; }
```

The size and location of the annotation on its page.

### Subtype

```csharp
string Datalogics.PDFL.Annotation.Subtype { get; }
```

The annotation's subtype.

### Title

```csharp
string Datalogics.PDFL.Annotation.Title { get; set; }
```

The title of the annotation.

## Methods

### AddScribble

```csharp
void Datalogics.PDFL.InkAnnotation.AddScribble(System.Collections.Generic.IList< Point > scribble)
```

**Parameters**

- `scribble` ([`System.Collections.Generic.IList< Point >`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Point.md)): The array of points, in order, that define the vertices of the scribble in user space coordinates, to add to the ink annotation.

**Returns:** `void`

The vertices that define one of many scribbles in an ink annotation, in user space.

### Dispose

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

**Returns:** `void`

### Equals

```csharp
override bool Datalogics.PDFL.Annotation.Equals(object obj)
```

**Parameters**

- `obj` (`object`)

**Returns:** `override bool`

### GenerateAppearance

```csharp
override Form Datalogics.PDFL.InkAnnotation.GenerateAppearance()
```

**Returns:** `override Form`

A new Form representing the annotation's appearance, or NULL if the graphic state could not be configured (for example, an invalid dash array).

Generate a new appearance stream with the current annotation properties.

Builds the visual representation of the ink annotation from its scribbles, stroke color, and border style. The annotation's Rect is updated to match the bounding box of the content.

### GetScribble

```csharp
System.Collections.Generic.IList< Point > Datalogics.PDFL.InkAnnotation.GetScribble(int index)
```

**Parameters**

- `index` (`int`): The index of the scribble to get.

**Returns:** [`System.Collections.Generic.IList< Point >`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/Point.md)

An array of points, in order, that define the indexed scribble of the ink annotation, in user space coordinates.

### HasRichTextData

```csharp
bool Datalogics.PDFL.Annotation.HasRichTextData()
```

**Returns:** `bool`

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

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

**Parameters**

- `occ` ([`OptionalContentContext`](https://docs.datalogics.com/apdfl21/DotNetFramework/APDFL21.0.0PlusP1e/class/OptionalContentContext.md)): The optional content context in which to check visibility.

**Returns:** `bool`

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.

### RemoveScribble

```csharp
void Datalogics.PDFL.InkAnnotation.RemoveScribble(int index)
```

**Parameters**

- `index` (`int`): The array of points, in order, that define the vertices of the scribble in user space coordinates, to remove from the ink annotation.

**Returns:** `void`

The vertices that define one of many scribbles in an ink annotation, in user space.

### ToString

```csharp
override string Datalogics.PDFL.Annotation.ToString()
```

**Returns:** `override string`

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

Returns a string representation of this annotation.
