# Class: Annotation

## Annotations. Annotation

Represents an annotation.

#### new Annotation()

  The base class for all annotations

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `Author` | string | The author of the annotation.
  `Custom` | * | Gets or sets a custom property on the annotation.
  `DateModified` | Date | Gets or sets the date that the annotation was last modified.
  `elementName` | string | Gets or sets the name of the annotation element in XFDF.
  `Height` | number | Gets or sets the height of the annotation
  `Hidden` | boolean | Gets or sets whether the annotation is hidden.
  `Invisible` | boolean | Gets or sets whether the annotation is invisible, only if it is an unknown annotation type. Generally for hiding annotations you should use "Hidden"
  `Printable` | boolean | Gets or sets whether the annotation should be displayed when printing the page.
  `ReadOnly` | boolean | Gets or sets whether the annotation is readonly or not. If it's readonly it can't be edited or deleted.
  `Locked` | boolean | Gets or sets whether the annotation is locked or not. If it's locked it can't be edited or deleted, but the note can be edited.
  `LockedContents` | boolean | Gets or sets whether the annotation contents are locked or not. If the contents are locked then note can't be edited but the annotation can be edited or deleted.
  `Id` | string | A unique identifier for the annotation. Corresponds to the name attribute in XFDF.
  `IsAdded` | boolean | Gets or sets whether the annotation has been added since the last time the AnnotCommand was retrieved.
  `IsDeleted` | boolean | Gets or sets whether the annotation has been deleted since the last time the AnnotCommand was retrieved.
  `IsModified` | boolean | Gets or sets whether the annotation has been modified since the last time the AnnotCommand was retrieved.
  `Listable` | boolean | Gets or sets whether the annotation should be listed in annotation lists.
  `NoMove` | boolean | Gets or sets whether or not the annotation can be moved
  `NoResize` | boolean | Gets or sets if this annotation can be resized by the user.
  `NoRotate` | boolean | Gets or sets if this annotation can be rotated.
  `NoZoom` | boolean | Gets or sets if this annotation scales with the page.
  `NoView` | boolean | Gets or sets whether the annotation is visible on the screen. Differs from Hidden in that it can still be printed if the print flag is set.
  `ToggleNoView` | boolean | Gets or sets whether the ToggleNoView flag is set on the annotation.
  `PageNumber` | number | Gets or sets the page number of a document that the annotation appears on.
  `Subject` | string | Represents the subject of the annotation. Default is the annotation's type.
  `Width` | number | Gets or sets the width of the annotation
  `X` | number | Gets or sets the annotation's x-axis position.
  `Y` | number | Gets or sets the annotation's y-axis position.
  `MaintainAspectRatio` | boolean | Gets or sets if the annotation maintains aspect ratio when being resized.
  `isClickableOutsideRect` | boolean | Gets or sets whether any parts of the annotation drawn outside of the rect are clickable

### Methods

#### adjustRect()

  Adjusts the annotation's bounding rectangle to take into account changes to the annotation e.g. stroke thickness, start/end points, etc

#### deserialize(element, pageMatrix)

  Deserializes the xml element into the annotation

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `element` | Element | an xml element representing the annotation
  `pageMatrix` | object | the page matrix used to convert PDF coordinates to XOD coordinates.

#### draw(ctx, pageMatrix)

  Draws the annotation on the provide canvas context, relative to the page. The point (0,0) coresponds to the top left corner of the page.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `ctx` | CanvasRenderingContext2D | The canvas context prepared to be drawn on.
  `pageMatrix` | object | The page matrix for the page that the annotation is on. You can get this object by calling getPageMatrix on the document object.

#### getBottom()

  Gets the bottommost y position measured in page coordinates.

  Deprecated:
    - Since 1.7

  ##### Returns:

  Type
    number

#### getContents()

  Gets the text content for the annotation. Contents may be displayed in an annotation's popup or directly on the page (in the case of FreeTextAnnotation).

  ##### Returns:

  the text content for the annotation.

  Type
    string

#### getCustom()

  Gets the custom value set by setCustom

  ##### Returns:

  The custom value

  Type
    *

#### getHeight()

  Gets the height of the annotation.

  ##### Returns:

  the height of the annotation.

  Type
    number

#### getLeft()

  Gets the leftmost x position measured in page coordinates.

  Deprecated:
    - Since 1.7

  ##### Returns:

  Type
    number

#### getPageNumber()

  Gets the page number of the annotation. Note: page number starts from 1.

  ##### Returns:

  The annotation's page number

  Type
    number

#### getRect()

  Get annotation bounding rectangle

  ##### Returns:

  Type
    Annotations.Rect

#### getRectPadding()

  Gets the padding that will be applied by default on the annotation's rectangle.

  ##### Returns:

  The amount of padding

  Type
    number

#### getReplies()

  Gets the list of replies to this annotation.

  ##### Returns:

  The list of replies

  Type
    Array

#### getRight()

  Gets the rightmost x position measured in page coordinates.

  Deprecated:
    - Since 1.7

  ##### Returns:

  Type
    number

#### getTop()

  Gets the topmost y position measured in page coordinates.

  Deprecated:
    - Since 1.7

  ##### Returns:

  Type
    number

#### getWidth()

  Gets the width of the annotation.

  ##### Returns:

  the width of the annotation.

  Type
    number

#### getX()

  Gets the x position measured in page coordinates of an annotation.

  ##### Returns:

  the x position

  Type
    number

#### getY()

  Gets the y position measured in page coordinates.

  ##### Returns:

  Type
    number

#### isReply()

  Gets whether the annotation is a reply to another annotation.

  ##### Returns:

  Returns true if it does reply to another annotation, false otherwise.

  Type
    boolean

#### isVisible()

  Whether the annotation is visible on the document or not. If the Hidden or NoView flags are set, or if the annotation is a reply to another annotation then it won't be visible.

  ##### Returns:

  Whether the annotation is visible on the document or not

  Type
    boolean

#### render(container, am, zoom)

  Render the element's other features, if any. This can be used, for example, for HTML rendering

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `container` |  |
  `am` |  |
  `zoom` |  |

#### resize(rect)

  Resize the annotation based on a new given Annotations.Rect. Use this method instead of setRect when internal properties (other than x, y, width and height) need to be modified on move/resize.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `rect` | Annotations.Rect | the new bounding rectangle

#### resourcesLoaded()

  Resolves when all required resources have finished loading. Currently only applicable to stamp annotations that use images.

  ##### Returns:

  A promise that resolves when the resources have finished loading

  Type
    Promise

#### serialize(element, pageMatrix)

  Serialize the annotation to an xml element

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `element` | Element | an xml element representing the annotation
  `pageMatrix` | object | the page matrix used to convert XOD coordinates to PDF coordinates.

  ##### Returns:

  the resulting xml element representing the annotation

  Type
    Element

#### setContents(value)

  Set the text content for the annotation. Note that this will not refresh the text in the UI.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `value` | string | the text content to be set

#### setCustom(value)

  Sets a custom value on the annotation.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `value` | * | Any custom value

#### setHeight(value)

  Sets the height of the annotation.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `value` | number | the height of the annotation.

#### setPageNumber(value)

  Sets the page number of the annotation. Note: page numbers start from 1.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `value` | number | the page number to be set

#### setRect(rect)

  Sets the size and location of the annotation's bounding rectangle. Use this method instead of resize when only the x, y, width and height needs to be modified. Beware: this method ignores coordinates if they are the wrong way around. (It hasn't been fixed for reasons of maintaining backward compatibility. use setRectWithNormalization instead if you want it to reverse the wrong-way-round coordinates instead of ignoring them.)

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `rect` | Annotations.Rect | the new bounding rectangle

#### setRect(rect)

  Sets the size and location of the annotation's bounding rectangle. Use this method instead of resize when only the x, y, width and height needs to be modified. Use setRectWithNormalization instead of setRect if you want to reverse any wrong-way-round coordinates instead of ignoring them.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `rect` | Annotations.Rect | the new bounding rectangle

#### setWidth(value)

  Sets the width of the annotation.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `value` | number | the width of the annotation.

#### setX(value)

  Sets the x position measured in page coordinates of an annotation.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `value` | number | the x position

#### setY()

  Sets the y position measured in page coordinates.

  ##### Parameters:

  Type | Description
  --- | ---
  number |

#### unrender()

  Destroys any non-canvas elements

#### Search results