Nutrient Web SDK

Class TextAnnotation

A free form text that will be rendered inside the bounding box. It has no open or closed state - instead of being displayed in a pop-up window, the text is always visible.

Fonts are client specific and determined during runtime. If a font is not found, we will automatically fall back to a sans serif font.

Class

Example

Create a text annotation
const annotation = new NutrientViewer.Annotations.TextAnnotation({
pageIndex: 0,
text: { format: "plain", value : "Welcome to\nNutrientViewer" },
font: "Helvetica",
isBold: true,
horizontalAlign: "center",
boundingBox: new NutrientViewer.Geometry.Rect({ left: 10, top: 20, width: 30, height: 40 }),
fontColor: NutrientViewer.Color.RED
});

See Also

Hierarchy

AnnotationTextAnnotation

Constructors

  • Parameters

    options
    Partial<{ … }>
    Optional

Properties

{ … } | null
PropertyDescription
onPageClose
onPageHidden
onPageOpen
onPageVisible
onPointerDown
onPointerEnter
onPointerLeave
onPointerUp

APStreamCache

OptionalReadonly
{ cache: string } | { attach: string }

Optional background color that will fill the complete bounding box.

Default Value

null

blendMode

Readonly

    | "normal"
    | "multiply"
    | "screen"
    | "overlay"
    | "darken"
    | "lighten"
    | "colorDodge"
    | "colorBurn"
    | "hardLight"
    | "softLight"
    | "difference"
    | "exclusion"

The blend mode defines how the color of the annotation will be applied to its background.

Default Value

"normal"

borderColor

Readonly

Optional border color that will be used for the text border and the line for text annotations of type callout. It will be not be rendered if the callout property is not set.

Default Value

null

borderStyle

Readonly
"solid" | "dashed" | "beveled" | "inset" | "underline" | null

borderWidth

Readonly
number | null

boundingBox

Readonly

Position of this annotation on the page. It's necessary that this spans all visible points of the annotation, otherwise hit testing and other features may not work.

callout

Readonly
Callout | null

The callout that is attached to the annotation.

Default Value

null

canReply

OptionalReadonly
boolean

canSetGroup

OptionalReadonly
boolean

This property defines whether the user has permission to edit the group of this annotation.

It is only available when collaboration permissions is enabled on Server-Backed deployments.

createdAt

Readonly

The date of the annotation creation.

createdBy

Readonly
string | null

The ID of the user who created the annotation, as determined by the authenticated user (the user_id claim of the JWT) that created it.

Unlike creatorName, which the client supplies, this is assigned by Document Engine from the authenticated session, so a client cannot cause a different author to be recorded. Setting it on an annotation you construct yourself only affects your own copy: it is not serialized, so it never reaches Document Engine or the underlying document.

It requires Instant sync against Document Engine 1.18 or later, and is null on Standalone, on the deprecated REST provider, against earlier Document Engine versions, and for annotations created without an authenticated user. It is also null when the server holds an author it can no longer resolve to an upstream user id, which is indistinguishable from the cases above.

Setting isAnonymous does not clear it. With Collaboration Permissions configured it is hidden from other users only; without them it is not hidden at all, which matches how creatorName already behaves.

creatorName

Readonly
string | null

The name of the creator of the annotation. This is a general purpose string which can easily be spoofed and might not reflect the actual creator of the annotation.

customData

Readonly
Record<string, unknown> | null

Annotations can store additional user-specified data.

NutrientViewer will not use or evaluate customData in the UI directly. You have full control over this property. For new annotations, this defaults to null.

customData will be stored as JSON through JSON.serialize() and JSON.parse(), and so must be a plain JSON-serializable object.

Example

Adding a new EllipseAnnotation with custom data attached:

const annotation = new NutrientViewer.Annotations.EllipseAnnotation({
pageIndex: 0,
boundingBox: new NutrientViewer.Geometry.Rect({
top: 10,
left: 10,
width: 100,
height: 100
}),
customData: {
circleId: "my-circle"
}
});

font

Readonly
string

The name of the font family that should be used.

Fonts are client specific and determined during runtime. If a font is not found, we will automatically fall back to 'sans-serif'.

We test the following list at runtime. The first available font will be used as the default for all new text annotations: Helvetica, Arial, Calibri, Century Gothic, Consolas, Courier, Dejavu Sans, Dejavu Serif, Georgia, Gill Sans, Impact, Lucida Sans, Myriad Pro, Open Sans, Palatino, Tahoma, Times New Roman, Trebuchet, Verdana, Zapfino, Comic Sans.

Default Value

"Helvetica"

fontColor

Readonly

A NutrientViewer.Color for the visible glyphs, or null for transparent color.

Default Value

Color.BLACK

fontSize

Readonly
number

The font size in page size pixels. Per default, we use values between 10 and 192 inclusive in the UI.

The text will scale when you zoom in.

Default Value

18

group

OptionalReadonly
string | null

This property is used to define the permission scope for this annotation.

It is only available when collaboration permissions is enabled on Server-Backed deployments.

hidden

Readonly
boolean

If set, do not display or print the annotation or allow it to interact with the user.

Default Value

false
"left" | "center" | "right"

The horizontal alignment of the text inside the bounding box. Can be either one of:

  • left
  • center
  • right

This is equal to the CSS text-align property.

Default Value

"left"

id

Readonly
string

A unique identifier to describe the annotation. When an annotation is created in the UI, the viewer has to generate a unique ID.

When changes are saved to the underlying annotation provider, we call Instance#ensureChangesSaved to make sure the annotation has been persisted from the provider.

isAnonymous

Readonly
boolean

isBold

Readonly
boolean

If true, the font will be bold if the font family supports this.

Default Value

false
boolean

isDeletable

OptionalReadonly
boolean

This property defines whether this annotation can be deleted or not. The value of this field depends on the set of collaboration permissions defined in the JWT token.

It is only available when collaboration permissions is enabled on Server-Backed deployments.

isEditable

OptionalReadonly
boolean

This property defines whether this annotation can be edited or not. The value of this field depends on the set of collaboration permissions defined in the JWT token.

It is only available when collaboration permissions is enabled on Server-Backed deployments.

isFitting

Readonly
boolean

When the annotation is modified through Nutrient Web SDK, we will set this flag whenever the whole text fits the bounds of the annotation without overflowing.

isItalic

Readonly
boolean

If true, the font will be italic if the font family supports this.

Default Value

false

isUnderline

Readonly
boolean

lineSpacing

Readonly
number | null

The spacing between lines of text, in PDF points. This is the total line height (baseline to baseline), independent of the font size.

Default Value

null

locked

Readonly
boolean

The annotation flag that prevents the annotation from being modified.

Default Value

false
boolean

The annotation flag that prevents the annotation content from being modified.

Default Value

false

name

Readonly
string | null

An optional field that may be used to identify the annotation.

By default, we'll set that to the same value as the automatically generated Annotation#id.

noPrint

Readonly
boolean

The annotation flag that prevents the annotation from being printed.

Default Value

false

noRotate

Readonly
boolean

note

Readonly
string | null

An optional note that can be set on any annotation.

This value is displayed in the Nutrient Web SDK UI for all annotations except NoteAnnotation, TextAnnotation, WidgetAnnotation and CommentMarkerAnnotation.

noView

Readonly
boolean

The annotation flag that prevents the annotation from being rendered in the UI.

The annotation may still be part of the printed page, depending of the value of the noPrint flag.

Default Value

false

noZoom

Readonly
boolean

When set, the annotation will not scale up in the page when it's zoomed in. The flag doesn't have an effect when the page is zoomed out to a zoom level less than 1. The flag is not currently supported when the callout property is set.

Default Value

false

opacity

Readonly
number

A transparency value that is applied to the complete annotation. The value is capped between 0 and 1 inclusive.

Default Value

1

pageIndex

Readonly
number

The page index on which the annotation is placed. It's important to notice that an annotation can only ever be on one page. If you create for example an ink annotation with lines on two pages, two annotation records will be created.

pageIndex is zero-based and has a maximum value of totalPageCount - 1.

pdfObjectId

Readonly
number | null

When the annotation is extracted directly from a PDF file, the pdfObjectId refers to the identifier that was used in the PDF document.

This ID is optional since newly created annotations using the SYNCProvider annotation provider won't have a pdfObjectId assigned.

Default Value

null

readOnly

Readonly
boolean

The annotation flag that makes the annotation read only.

Default Value

false

rotation

Readonly
number

The counter-clockwise rotation value in degrees relative to the rotated PDF page. Inserting an annotation with a rotation value of 0 will make it appear in the same direction as the UI appears, when no NutrientViewer.ViewState#pagesRotation is set.

Text annotations support free rotation using integers between 0° and 359°. Negative values or values above 359 are normalized to this interval. Attempting to use non-integer values will result in an error.

Default Value

0

subject

Readonly
string | null

An optional annotation subject, representing a short description of the subject being addressed by the annotation. This property has no effect on the annotation rendering.

text

Readonly
{ format: "plain" | "xhtml"; value: string }

The visible contents in plain text/xhtml formats.

We use a simple newline delimiter \n for multi line texts in case of plain text. A trailing newline (e.g. foobar\n) will result in an additional line.

In case of XHTML, we support the following tags:

  • <b>: Bold
  • <i>: Italic
  • <span>: Font color, background color and underline using the style attribute (e.g. <span style="color: red; background-color: blue; text-decoration: underline">Hello</span>)
  • p: Paragraph. You can use this to add a newline between paragraphs.
PropertyDescription
format
value

Example

Get the text value of a text annotation
const { value, format } = annotation.text;

Default Value

{ format: "plain", value: "" }

updatedAt

Readonly

The date of last annotation update.

"center" | "top" | "bottom"

The vertical alignment of the text inside the bounding box. Can be either one of:

  • top
  • center
  • bottom

Default Value

"top"

fontSizePresets

StaticReadonly
readonly number[]

isEditable

StaticReadonly
true

readableName

StaticReadonly
"Text"

Methods

  • Returns the record's [key, value] pairs, in the order its fields were defined.

    Returns

    IterableIterator<[string, unknown]>

    An iterator over the record's fields.

Immutable Record API

27
  • Iterates the record's [key, value] pairs, in the order its fields were defined.

    Returns

    IterableIterator<[string, unknown]>
  • Returns a record with every key reset to the default it was defined with.

    Returns

    this

    A new record holding only default values.

  • Returns a record with key reset to the default it was defined with.

    Type Parameters

    K
    extends keyof { … }

    Parameters

    keyK & (
    | "text"
    | "fontColor"
    | "backgroundColor"
    | "font"
    | "fontSize"
    | "isBold"
    | "isItalic"
    | "isUnderline"
    | "horizontalAlign"
    | "verticalAlign"
    | "callout"
    | "borderStyle"
    | "borderWidth"
    | "borderColor"
    | "isFitting"
    | "lineSpacing"
    | "id"
    | "name"
    | "subject"
    | "pdfObjectId"
    | "pageIndex"
    | "boundingBox"
    | "opacity"
    | "note"
    | "creatorName"
    | "createdBy"
    | "createdAt"
    | "updatedAt"
    | "customData"
    | "enrichment"
    | "noView"
    | "noPrint"
    | "locked"
    | "lockedContents"
    | "readOnly"
    | "hidden"
    | "group"
    | "isEditable"
    | "isDeletable"
    | "canSetGroup"
    | "canReply"
    | "rotation"
    | "additionalActions"
    | "noZoom"
    | "noRotate"
    | "isCommentThreadRoot"
    | "isAnonymous"
    | "APStreamCache"
    | "blendMode"
    | "action"
    )

    One of the keys this record was defined with.

    Returns

    this

    A new record, or this one when the value already equals the default.

  • Returns a record with the value at keyPath removed. A field of this record is reset to its default; a key of a nested collection or plain object is deleted.

    Parameters

    keyPathIterable<unknown>

    The keys to follow, outermost first.

    Returns

    this

    A new record, or this one when nothing was removed.

equals

Deprecated
  • Reports whether other is a record holding the same keys with equal values, whatever its class.

    Parameters

    otherunknown

    The value to compare against.

    Returns

    boolean

    true when both hold the same keys and every value matches.

    Deprecated

    Records of different classes with identical values compare equal. Use isEqual(), which also requires both records to be of the same class.

  • Returns the value stored under key.

    Type Parameters

    K
    extends keyof { … }
    N = never

    Parameters

    keyK & (
    | "text"
    | "fontColor"
    | "backgroundColor"
    | "font"
    | "fontSize"
    | "isBold"
    | "isItalic"
    | "isUnderline"
    | "horizontalAlign"
    | "verticalAlign"
    | "callout"
    | "borderStyle"
    | "borderWidth"
    | "borderColor"
    | "isFitting"
    | "lineSpacing"
    | "id"
    | "name"
    | "subject"
    | "pdfObjectId"
    | "pageIndex"
    | "boundingBox"
    | "opacity"
    | "note"
    | "creatorName"
    | "createdBy"
    | "createdAt"
    | "updatedAt"
    | "customData"
    | "enrichment"
    | "noView"
    | "noPrint"
    | "locked"
    | "lockedContents"
    | "readOnly"
    | "hidden"
    | "group"
    | "isEditable"
    | "isDeletable"
    | "canSetGroup"
    | "canReply"
    | "rotation"
    | "additionalActions"
    | "noZoom"
    | "noRotate"
    | "isCommentThreadRoot"
    | "isAnonymous"
    | "APStreamCache"
    | "blendMode"
    | "action"
    )

    One of the keys this record was defined with.

    notSetValueN
    Optional

    Returned when the record does not define key.

    Returns

    N | { … }[K]

    The current value for that key.

  • Returns the value at keyPath, walking nested records and collections.

    A literal key path is checked against the record's fields and gives the value's type; a computed one gives unknown.

    Parameters

    keyPathIterable<unknown>

    The keys to follow, outermost first.

    Returns

    unknown

    The value at that path, or undefined when it does not resolve.

  • Returns the value at keyPath, walking nested records and collections.

    A literal key path is checked against the record's fields and gives the value's type; a computed one gives unknown.

    Type Parameters

    N

    Parameters

    keyPathIterable<unknown>

    The keys to follow, outermost first.

    notSetValueN

    Returned when the path does not resolve.

    Returns

    unknown

    The value at that path, or notSetValue.

  • Reports whether key is one of the keys this record was defined with.

    A literal key must name a field; a key typed as string is narrowed to the field names.

    Parameters

    keystring

    The key to look for.

    Returns

    key is
    | "text"
    | "fontColor"
    | "backgroundColor"
    | "font"
    | "fontSize"
    | "isBold"
    | "isItalic"
    | "isUnderline"
    | "horizontalAlign"
    | "verticalAlign"
    | "callout"
    | "borderStyle"
    | "borderWidth"
    | "borderColor"
    | "isFitting"
    | "lineSpacing"
    | "id"
    | "name"
    | "subject"
    | "pdfObjectId"
    | "pageIndex"
    | "boundingBox"
    | "opacity"
    | "note"
    | "creatorName"
    | "createdBy"
    | "createdAt"
    | "updatedAt"
    | "customData"
    | "enrichment"
    | "noView"
    | "noPrint"
    | "locked"
    | "lockedContents"
    | "readOnly"
    | "hidden"
    | "group"
    | "isEditable"
    | "isDeletable"
    | "canSetGroup"
    | "canReply"
    | "rotation"
    | "additionalActions"
    | "noZoom"
    | "noRotate"
    | "isCommentThreadRoot"
    | "isAnonymous"
    | "APStreamCache"
    | "blendMode"
    | "action"

    true when the record defines that key, even if its value is null.

  • Computes a hash of this record from its contents, the same way Immutable.js does. Equal records have equal hashes; records with equal hashes are not necessarily equal. Plain objects, functions and symbols hash by identity, so a hash is only meaningful within the page that computed it.

    Returns

    number

    An integer hash.

  • Reports whether keyPath resolves, walking nested records and collections.

    Parameters

    keyPathIterable<unknown>

    The keys to follow, outermost first.

    Returns

    boolean

    true when every key along the path is present.

  • Reports whether other is a record of the same class holding equal values. Only the two records' own classes are compared; nested records compare as equals() does.

    Parameters

    otherunknown

    The value to compare against.

    Returns

    boolean

    true when both are the same class and every value matches.

  • Returns a record with the entries of each collection applied in order.

    Keys the record was not defined with are ignored.

    Parameters

    ...collections
    (Partial<{ … }> | Iterable<readonly [string, unknown]>)[]

    Plain objects or key/value iterables to apply.

    Returns

    this

    A new record, or this one when no value changed.

  • Returns a record with the entries of each collection merged in, recursing into nested collections and plain objects instead of replacing them.

    Keys the record was not defined with are ignored.

    Parameters

    ...collections
    (Partial<{ … }> | Iterable<readonly [string, unknown]>)[]

    Plain objects or key/value iterables to merge in.

    Returns

    this

    A new record, or this one when no value changed.

  • Returns a record with each collection merged deeply into the value at keyPath.

    Parameters

    keyPathIterable<unknown>

    The keys to follow, outermost first.

    ...collectionsunknown[]

    Collections or plain objects to merge into the value there.

    Returns

    this

    A new record, or this one when the value is unchanged.

  • Returns a record with the entries of each collection merged in deeply, calling merger where a nested value is not a collection to decide the value that is kept.

    Keys the record was not defined with are ignored.

    Parameters

    merger(previous: unknown, next: unknown, key: unknown) => unknown

    Receives the current value, the incoming value and the key.

    ...collections
    (Partial<{ … }> | Iterable<readonly [string, unknown]>)[]

    Plain objects or key/value iterables to merge in.

    Returns

    this

    A new record, or this one when no value changed.

  • Returns a record with each collection merged into the value at keyPath, one level at a time.

    Parameters

    keyPathIterable<unknown>

    The keys to follow, outermost first.

    ...collectionsunknown[]

    Collections or plain objects to merge into the value there.

    Returns

    this

    A new record, or this one when the value is unchanged.

  • Returns a record with the entries of each collection merged in, calling merger for each key the record already holds to decide the value that is kept.

    Keys the record was not defined with are ignored.

    Parameters

    merger
    <K extends string | number | symbol>(
    previous: { … }[K],
    next: { … }[K],
    key: K
    ) => { … }[K]

    Receives the current value, the incoming value and the key.

    ...collections
    (Partial<{ … }> | Iterable<readonly [string, unknown]>)[]

    Plain objects or key/value iterables to merge in.

    Returns

    this

    A new record, or this one when no value changed.

  • An alias for delete.

    Type Parameters

    K
    extends keyof { … }

    Parameters

    keyK & (
    | "text"
    | "fontColor"
    | "backgroundColor"
    | "font"
    | "fontSize"
    | "isBold"
    | "isItalic"
    | "isUnderline"
    | "horizontalAlign"
    | "verticalAlign"
    | "callout"
    | "borderStyle"
    | "borderWidth"
    | "borderColor"
    | "isFitting"
    | "lineSpacing"
    | "id"
    | "name"
    | "subject"
    | "pdfObjectId"
    | "pageIndex"
    | "boundingBox"
    | "opacity"
    | "note"
    | "creatorName"
    | "createdBy"
    | "createdAt"
    | "updatedAt"
    | "customData"
    | "enrichment"
    | "noView"
    | "noPrint"
    | "locked"
    | "lockedContents"
    | "readOnly"
    | "hidden"
    | "group"
    | "isEditable"
    | "isDeletable"
    | "canSetGroup"
    | "canReply"
    | "rotation"
    | "additionalActions"
    | "noZoom"
    | "noRotate"
    | "isCommentThreadRoot"
    | "isAnonymous"
    | "APStreamCache"
    | "blendMode"
    | "action"
    )

    One of the keys this record was defined with.

    Returns

    this

    A new record, or this one when the value already equals the default.

  • An alias for deleteIn.

    Parameters

    keyPathIterable<unknown>

    The keys to follow, outermost first.

    Returns

    this

    A new record, or this one when nothing was removed.

  • Returns a record with key set to value.

    Setting a key to the value it already holds returns the same instance, so a record can be compared by reference to detect a change.

    Type Parameters

    K
    extends keyof { … }

    Parameters

    keyK & (
    | "text"
    | "fontColor"
    | "backgroundColor"
    | "font"
    | "fontSize"
    | "isBold"
    | "isItalic"
    | "isUnderline"
    | "horizontalAlign"
    | "verticalAlign"
    | "callout"
    | "borderStyle"
    | "borderWidth"
    | "borderColor"
    | "isFitting"
    | "lineSpacing"
    | "id"
    | "name"
    | "subject"
    | "pdfObjectId"
    | "pageIndex"
    | "boundingBox"
    | "opacity"
    | "note"
    | "creatorName"
    | "createdBy"
    | "createdAt"
    | "updatedAt"
    | "customData"
    | "enrichment"
    | "noView"
    | "noPrint"
    | "locked"
    | "lockedContents"
    | "readOnly"
    | "hidden"
    | "group"
    | "isEditable"
    | "isDeletable"
    | "canSetGroup"
    | "canReply"
    | "rotation"
    | "additionalActions"
    | "noZoom"
    | "noRotate"
    | "isCommentThreadRoot"
    | "isAnonymous"
    | "APStreamCache"
    | "blendMode"
    | "action"
    )

    One of the keys this record was defined with.

    value
    { … }[K]

    The value to store.

    Returns

    this

    A new record, or this one when the value is unchanged or the key is not defined.

  • Returns a record with value written at keyPath.

    Parameters

    keyPathIterable<unknown>

    The keys to follow, outermost first.

    valueunknown

    The value to store.

    Returns

    this

    A new record, or this one when the value is unchanged.

  • Converts this record and everything nested inside it to plain JavaScript values.

    Returns

    { … }

    A plain object holding this record's values, converted all the way down.

    • text: { format: "plain" | "xhtml"; value: string | null }
    • fontColor: { r: number; g: number; b: number; transparent: boolean } | null
    • backgroundColor: { r: number; g: number; b: number; transparent: boolean } | null
    • font: string
    • fontSize: number | null
    • isBold: boolean | null
    • isItalic: boolean | null
    • isUnderline: boolean | null
    • horizontalAlign: "left" | "center" | "right"
    • verticalAlign: "center" | "top" | "bottom"
    • callout:
          | {
              start: { x: number; y: number }
              | null;
              knee: { x: number; y: number } | null;
              end: { x: number; y: number } | null;
              cap:
                  | "square"
                  | "circle"
                  | "diamond"
                  | "openArrow"
                  | "closedArrow"
                  | "butt"
                  | "reverseOpenArrow"
                  | "reverseClosedArrow"
                  | "slash"
                  | null;
              innerRectInset: | {
                  left: number;
                  top: number;
                  right: number;
                  bottom: number;
              }
              | null;
          }
          | null
    • borderStyle: "solid" | "dashed" | "beveled" | "inset" | "underline" | null
    • borderWidth: number | null
    • borderColor: { r: number; g: number; b: number; transparent: boolean } | null
    • isFitting: boolean
    • lineSpacing: number | null

      The spacing between lines of text, in PDF points. This is the total line height (baseline to baseline), independent of the font size.

      Default Value

      null
    • id: string | null
    • name: string | null
    • subject: string | null
    • pdfObjectId: number | null
    • pageIndex: number | null
    • boundingBox: { left: number; top: number; width: number; height: number } | null
    • opacity: number | null
    • note: string | null
    • creatorName: string | null
    • createdBy: string | null
    • createdAt: Date | null
    • updatedAt: Date | null
    • customData: Record<string, unknown> | null
    • enrichment: AnnotationEnrichmentJSON | null | undefined
    • noView: boolean | null
    • noPrint: boolean | null
    • locked: boolean | null
    • lockedContents: boolean | null
    • readOnly: boolean | null
    • hidden: boolean | null
    • group: string | null | undefined
    • isEditable: boolean | undefined
    • isDeletable: boolean | undefined
    • canSetGroup: boolean | undefined
    • canReply: boolean | undefined
    • rotation: number
    • additionalActions:
          | {
              onPointerEnter?: {
                  subActions?: NutrientViewer.Actions.Action[]
                  | null;
              } & {
                  subActions?: Action<(ActionProperties), (ActionProperties)>[]
                  | null;
              };
              onPointerLeave?: { subActions?: NutrientViewer.Actions.Action[]
              | null } & {
                  subActions?: Action<(ActionProperties), (ActionProperties)>[] | null;
              };
              onPointerDown?: { subActions?: NutrientViewer.Actions.Action[]
              | null } & {
                  subActions?: Action<(ActionProperties), (ActionProperties)>[] | null;
              };
              onPointerUp?: { subActions?: NutrientViewer.Actions.Action[]
              | null } & {
                  subActions?: Action<(ActionProperties), (ActionProperties)>[] | null;
              };
              onPageOpen?: { subActions?: NutrientViewer.Actions.Action[]
              | null } & {
                  subActions?: Action<(ActionProperties), (ActionProperties)>[] | null;
              };
              onPageClose?: { subActions?: NutrientViewer.Actions.Action[]
              | null } & {
                  subActions?: Action<(ActionProperties), (ActionProperties)>[] | null;
              };
              onPageVisible?: { subActions?: NutrientViewer.Actions.Action[]
              | null } & {
                  subActions?: Action<(ActionProperties), (ActionProperties)>[] | null;
              };
              onPageHidden?: { subActions?: NutrientViewer.Actions.Action[]
              | null } & {
                  subActions?: Action<(ActionProperties), (ActionProperties)>[] | null;
              };
          }
          | null
    • noZoom: boolean
    • noRotate: boolean
    • isCommentThreadRoot: boolean
    • isAnonymous: boolean
    • APStreamCache: { cache: string } | { attach: string } | undefined
    • blendMode:
          | "normal"
          | "multiply"
          | "screen"
          | "overlay"
          | "darken"
          | "lighten"
          | "colorDodge"
          | "colorBurn"
          | "hardLight"
          | "softLight"
          | "difference"
          | "exclusion"
    • action:
          | { subActions?: NutrientViewer.Actions.Action[]
          | null } & {
              subActions?: Action<(ActionProperties), (ActionProperties)>[] | null;
          }
          | null
  • An alias for toObject, called by JSON.stringify.

    Returns

    { … }

    A plain object holding this record's values.

    • action: NutrientViewer.Actions.Action | null
    • additionalActions:
          | {
              onPageClose?: NutrientViewer.Actions.Action;
              onPageHidden?: NutrientViewer.Actions.Action;
              onPageOpen?: NutrientViewer.Actions.Action;
              onPageVisible?: NutrientViewer.Actions.Action;
              onPointerDown?: NutrientViewer.Actions.Action;
              onPointerEnter?: NutrientViewer.Actions.Action;
              onPointerLeave?: NutrientViewer.Actions.Action;
              onPointerUp?: NutrientViewer.Actions.Action;
          }
          | null
    • APStreamCache: { cache: string } | { attach: string } | undefined
    • backgroundColor: NutrientViewer.Color | null
    • blendMode:
          | "normal"
          | "multiply"
          | "screen"
          | "overlay"
          | "darken"
          | "lighten"
          | "colorDodge"
          | "colorBurn"
          | "hardLight"
          | "softLight"
          | "difference"
          | "exclusion"
    • borderColor: NutrientViewer.Color | null
    • borderStyle: "solid" | "dashed" | "beveled" | "inset" | "underline" | null
    • borderWidth: number | null
    • boundingBox: NutrientViewer.Geometry.Rect | null
    • callout: Callout | null
    • canReply: boolean | undefined
    • canSetGroup: boolean | undefined
    • createdAt: Date | null
    • createdBy: string | null
    • creatorName: string | null
    • customData: Record<string, unknown> | null
    • enrichment: AnnotationEnrichmentJSON | null | undefined
    • font: string
    • fontColor: NutrientViewer.Color | null
    • fontSize: number | null
    • group: string | null | undefined
    • hidden: boolean | null
    • horizontalAlign: "left" | "center" | "right"
    • id: string | null
    • isAnonymous: boolean
    • isBold: boolean | null
    • isCommentThreadRoot: boolean
    • isDeletable: boolean | undefined
    • isEditable: boolean | undefined
    • isFitting: boolean
    • isItalic: boolean | null
    • isUnderline: boolean | null
    • lineSpacing: number | null

      The spacing between lines of text, in PDF points. This is the total line height (baseline to baseline), independent of the font size.

      Default Value

      null
    • locked: boolean | null
    • lockedContents: boolean | null
    • name: string | null
    • noPrint: boolean | null
    • noRotate: boolean
    • note: string | null
    • noView: boolean | null
    • noZoom: boolean
    • opacity: number | null
    • pageIndex: number | null
    • pdfObjectId: number | null
    • readOnly: boolean | null
    • rotation: number
    • subject: string | null
    • text: { format: "plain" | "xhtml"; value: string | null }
    • updatedAt: Date | null
    • verticalAlign: "center" | "top" | "bottom"
  • Converts this record to a plain object, one level deep. Nested records are left as they are.

    Returns

    { … }

    A plain object holding this record's values.

    • action: NutrientViewer.Actions.Action | null
    • additionalActions:
          | {
              onPageClose?: NutrientViewer.Actions.Action;
              onPageHidden?: NutrientViewer.Actions.Action;
              onPageOpen?: NutrientViewer.Actions.Action;
              onPageVisible?: NutrientViewer.Actions.Action;
              onPointerDown?: NutrientViewer.Actions.Action;
              onPointerEnter?: NutrientViewer.Actions.Action;
              onPointerLeave?: NutrientViewer.Actions.Action;
              onPointerUp?: NutrientViewer.Actions.Action;
          }
          | null
    • APStreamCache: { cache: string } | { attach: string } | undefined
    • backgroundColor: NutrientViewer.Color | null
    • blendMode:
          | "normal"
          | "multiply"
          | "screen"
          | "overlay"
          | "darken"
          | "lighten"
          | "colorDodge"
          | "colorBurn"
          | "hardLight"
          | "softLight"
          | "difference"
          | "exclusion"
    • borderColor: NutrientViewer.Color | null
    • borderStyle: "solid" | "dashed" | "beveled" | "inset" | "underline" | null
    • borderWidth: number | null
    • boundingBox: NutrientViewer.Geometry.Rect | null
    • callout: Callout | null
    • canReply: boolean | undefined
    • canSetGroup: boolean | undefined
    • createdAt: Date | null
    • createdBy: string | null
    • creatorName: string | null
    • customData: Record<string, unknown> | null
    • enrichment: AnnotationEnrichmentJSON | null | undefined
    • font: string
    • fontColor: NutrientViewer.Color | null
    • fontSize: number | null
    • group: string | null | undefined
    • hidden: boolean | null
    • horizontalAlign: "left" | "center" | "right"
    • id: string | null
    • isAnonymous: boolean
    • isBold: boolean | null
    • isCommentThreadRoot: boolean
    • isDeletable: boolean | undefined
    • isEditable: boolean | undefined
    • isFitting: boolean
    • isItalic: boolean | null
    • isUnderline: boolean | null
    • lineSpacing: number | null

      The spacing between lines of text, in PDF points. This is the total line height (baseline to baseline), independent of the font size.

      Default Value

      null
    • locked: boolean | null
    • lockedContents: boolean | null
    • name: string | null
    • noPrint: boolean | null
    • noRotate: boolean
    • note: string | null
    • noView: boolean | null
    • noZoom: boolean
    • opacity: number | null
    • pageIndex: number | null
    • pdfObjectId: number | null
    • readOnly: boolean | null
    • rotation: number
    • subject: string | null
    • text: { format: "plain" | "xhtml"; value: string | null }
    • updatedAt: Date | null
    • verticalAlign: "center" | "top" | "bottom"
  • Returns a record with key replaced by the result of applying updater to its current value.

    Type Parameters

    K
    extends keyof { … }

    Parameters

    keyK & (
    | "text"
    | "fontColor"
    | "backgroundColor"
    | "font"
    | "fontSize"
    | "isBold"
    | "isItalic"
    | "isUnderline"
    | "horizontalAlign"
    | "verticalAlign"
    | "callout"
    | "borderStyle"
    | "borderWidth"
    | "borderColor"
    | "isFitting"
    | "lineSpacing"
    | "id"
    | "name"
    | "subject"
    | "pdfObjectId"
    | "pageIndex"
    | "boundingBox"
    | "opacity"
    | "note"
    | "creatorName"
    | "createdBy"
    | "createdAt"
    | "updatedAt"
    | "customData"
    | "enrichment"
    | "noView"
    | "noPrint"
    | "locked"
    | "lockedContents"
    | "readOnly"
    | "hidden"
    | "group"
    | "isEditable"
    | "isDeletable"
    | "canSetGroup"
    | "canReply"
    | "rotation"
    | "additionalActions"
    | "noZoom"
    | "noRotate"
    | "isCommentThreadRoot"
    | "isAnonymous"
    | "APStreamCache"
    | "blendMode"
    | "action"
    )

    One of the keys this record was defined with.

    updater
    (value: { … }[K]) => { … }[K]

    Receives the current value and returns the new one.

    Returns

    this

    A new record, or this one when the value is unchanged.

  • Returns a record with the value at keyPath replaced by the result of updater.

    Type Parameters

    N

    Parameters

    keyPathIterable<unknown>

    The keys to follow, outermost first.

    notSetValueN
    updater(value: unknown) => unknown

    Receives the current value and returns the new one.

    Returns

    this

    A new record, or this one when the value is unchanged.

  • Returns a record with the value at keyPath replaced by the result of updater.

    Parameters

    keyPathIterable<unknown>

    The keys to follow, outermost first.

    updater(value: unknown) => unknown

    Receives the current value and returns the new one.

    Returns

    this

    A new record, or this one when the value is unchanged.

  • Applies several changes as one, so only a single new record is allocated.

    The record handed to mutator may be written to with set; it is frozen again once mutator returns.

    Parameters

    mutator(mutable: this) => unknown

    Receives a temporarily writable copy of this record.

    Returns

    this

    A new record holding the applied changes, or this one when nothing changed.