Nutrient Web SDK

Class WidgetAnnotation

Widget annotations are part of PDF forms and used to position form elements, linked to NutrientViewer.FormFields.FormFields, on a page. To know how a widget is rendered also depends on the linked form field. Widget annotations may only be created or modified if the Form Creator component is present in the license.

Class

Hierarchy

AnnotationWidgetAnnotation

Constructors

  • Parameters

    options
    Partial<{ … }>
    Optional

Properties

{ … } | null

Optional actions to execute when an event is triggered.

PropertyDescription
onBlur

Execute an action when the widget loses focus.

The name of this event in the PDF spec is Bl.

onChange

Action to be performed when the user changes the value of the field.

The name of this event in the PDF spec is V.

onFocus

Execute an action when the widget is focused.

The name of this event in the PDF spec is Fo.

onFormat

Action to be performed before the field is formatted to display its current value.

The name of this event in the PDF spec is F.

onInput

Action to be performed when the user types a key-stroke into a text field or combo box or modifies the selection in a scrollable list box.

The name of this event in the PDF spec is K.

onPointerDown

Action to be performed when the pointer is pressed.

onPointerEnter

Action to be performed when the pointer enters the field area.

onPointerLeave

Action to be performed when the pointer hovers the field.

onPointerUp

Action to be performed when the pointer is released.

Default Value

null
{ cache: string } | { attach: string }

Optional background color that will fill the bounding box.

Default Value

null

    | "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"

Optional border color that will be drawn at the border of the bounding box.

Default Value

null
number[] | null

Optional dash pattern used to draw the border for dashed border style.

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

Optional border style used for the border of the bounding box. Valid options are:

  • solid
  • dashed
  • beveled
  • inset
  • underline

Default Value

null
number | null

Optional border width in PDF pixels, that will be used for the border of the bounding box.

Default Value

null

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.

canReply

Optional
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.

The date of the annotation creation.

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.

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.

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"
}
});
string | null

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 widget 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.

If the browser does not natively support the font, it's still possible to support it by providing the required font data using a custom stylesheet.

Default Value

null

Optional font color.

Default Value

null
number | "auto" | null

Optional font size in page size pixels.

Default Value

null
string

The NutrientViewer.FormFields.FormField#name of the linked form field. Based on the type of the field, a different element will be rendered

string

This property is used to define the permission scope for this widget annotation. If you want to change the group, you should update the group property of the corresponding form field.

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

boolean

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

Default Value

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

Optional horizontal text alignment.

Default Value

left
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.

boolean

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

Default Value

false

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.

boolean

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

Default Value

false

lineSpacing

Readonly
number | null

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

Default Value

null
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
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.

boolean

The annotation flag that prevents the annotation from being printed.

Default Value

false
boolean
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.

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
boolean
number

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

Default Value

1
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.

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
boolean

The annotation flag that makes the annotation read only.

Default Value

false
number

The counter-clockwise rotation value in degree 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.

Can either be 0°, 90°, 180°, or 270°. Multiple or negative values are normalized to this interval.

Note: Due to browser constraints, the rotation property is currently reset once the edit mode is enabled via the user interface.

Default Value

0
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.

The date of last annotation update.

"center" | "top" | "bottom" | null

Optional vertical text alignment.

Default Value

null
string

Immutable Record API

24

asImmutable

Deprecated
  • Deprecated

    Returns

    this

    Deprecated

    Not part of the collection API the Nutrient Web SDK supports. Build the value once, or use withMutations().

    See Also

    • Map#asImmutable

asMutable

Deprecated
  • Deprecated

    Returns

    this

    Deprecated

    Not part of the collection API the Nutrient Web SDK supports. Use withMutations().

    See Also

    • Map#asMutable

  • Returns a new instance of this Record type with all values set to their default values.

    Returns

    this
  • Returns a new instance of this Record type with the value for the specific key set to its default value.

    Type Parameters

    K
    extends keyof { … }

    Parameters

    keyK

    Returns

    this
  • Returns a new instance of this Record type with the value at the given key path removed.

    Also available as removeIn.

    Parameters

    keyPathIterable<unknown>

    Returns

    this
  • Parameters

    otherunknown

    Returns

    boolean
  • Returns the value associated with the provided key, which may be the default value defined when creating the Record factory function.

    If the requested key is not defined by this Record type, then notSetValue will be returned if provided. Note that this scenario would produce an error when using Flow or TypeScript.

    Type Parameters

    K
    extends keyof { … }

    Parameters

    keyK

    Returns

    { … }[K]
  • Parameters

    keyPathIterable<unknown>
    notSetValueunknown
    Optional

    Returns

    unknown
  • Parameters

    keyunknown

    Returns

    boolean
  • Parameters

    ...collections
    Partial<{ … }>[]

    Returns

    this
  • Parameters

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

    Returns

    this
  • Parameters

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

    Returns

    this
  • Parameters

    merger(previous?: unknown, next?: unknown, key?: string) => unknown
    ...collections
    (Iterable<[string, unknown], any, any> | Partial<{ … }>)[]

    Returns

    this

mergeIn

Deprecated
  • Deprecated

    Parameters

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

    Returns

    this

    Deprecated

    Not part of the collection API the Nutrient Web SDK supports. Use update() followed by merge().

  • Parameters

    merger(previous?: unknown, next?: unknown, key?: string) => unknown
    ...collections
    (Iterable<[string, unknown], any, any> | Partial<{ … }>)[]

    Returns

    this

removeIn

Deprecated
  • Deprecated

    Parameters

    keyPathIterable<unknown>

    Returns

    this

    Deprecated

    Not part of the collection API the Nutrient Web SDK supports. Use deleteIn(), or update() followed by delete().

  • Type Parameters

    K
    extends keyof { … }

    Parameters

    keyK
    value
    { … }[K]

    Returns

    this
  • Deeply converts this Record to equivalent native JavaScript Object.

    Note: This method may not be overridden. Objects with custom serialization to plain JS may override toJSON() instead.

    Returns

    { … }
    • [key: string]: unknown
    • action: NutrientViewer.Actions.Action | null
    • additionalActions:
          | {
              onBlur?: NutrientViewer.Actions.JavaScriptAction;
              onChange?: NutrientViewer.Actions.JavaScriptAction;
              onFocus?: NutrientViewer.Actions.JavaScriptAction;
              onFormat?: NutrientViewer.Actions.JavaScriptAction;
              onInput?: NutrientViewer.Actions.JavaScriptAction;
              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
    • borderDashArray: number[] | null
    • borderStyle: "solid" | "dashed" | "beveled" | "inset" | "underline" | null
    • borderWidth: number | null
    • boundingBox: NutrientViewer.Geometry.Rect | null
    • buttonIconUpdatedAt: number | null
    • canReply: boolean | undefined
    • canSetGroup: boolean | undefined
    • contentType: string | null
    • createdAt: Date | null
    • createdBy: string | null
    • creatorName: string | null
    • customData: Record<string, unknown> | null
    • enrichment: AnnotationEnrichmentJSON | null | undefined
    • font: string | null
    • fontColor: NutrientViewer.Color | null
    • fontSize: number | "auto" | null
    • formFieldName: string | null
    • group: string | null | undefined
    • hidden: boolean | null
    • horizontalAlign: "left" | "center" | "right" | null
    • id: string | null
    • isAnonymous: boolean
    • isBold: boolean | null
    • isCommentThreadRoot: boolean
    • isDeletable: boolean | undefined
    • isEditable: boolean | undefined
    • isItalic: boolean | null
    • lineSpacing: number | null

      The spacing between lines of text in multiline text widgets, 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
    • updatedAt: Date | null
    • verticalAlign: "center" | "top" | "bottom" | null
    • widgetAttachmentId: string | null
  • Shallowly converts this Record to equivalent native JavaScript Object.

    Returns

    { … }
    • [key: string]: unknown
    • action: NutrientViewer.Actions.Action | null
    • additionalActions:
          | {
              onBlur?: NutrientViewer.Actions.JavaScriptAction;
              onChange?: NutrientViewer.Actions.JavaScriptAction;
              onFocus?: NutrientViewer.Actions.JavaScriptAction;
              onFormat?: NutrientViewer.Actions.JavaScriptAction;
              onInput?: NutrientViewer.Actions.JavaScriptAction;
              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
    • borderDashArray: number[] | null
    • borderStyle: "solid" | "dashed" | "beveled" | "inset" | "underline" | null
    • borderWidth: number | null
    • boundingBox: NutrientViewer.Geometry.Rect | null
    • buttonIconUpdatedAt: number | null
    • canReply: boolean | undefined
    • canSetGroup: boolean | undefined
    • contentType: string | null
    • createdAt: Date | null
    • createdBy: string | null
    • creatorName: string | null
    • customData: Record<string, unknown> | null
    • enrichment: AnnotationEnrichmentJSON | null | undefined
    • font: string | null
    • fontColor: NutrientViewer.Color | null
    • fontSize: number | "auto" | null
    • formFieldName: string | null
    • group: string | null | undefined
    • hidden: boolean | null
    • horizontalAlign: "left" | "center" | "right" | null
    • id: string | null
    • isAnonymous: boolean
    • isBold: boolean | null
    • isCommentThreadRoot: boolean
    • isDeletable: boolean | undefined
    • isEditable: boolean | undefined
    • isItalic: boolean | null
    • lineSpacing: number | null

      The spacing between lines of text in multiline text widgets, 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
    • updatedAt: Date | null
    • verticalAlign: "center" | "top" | "bottom" | null
    • widgetAttachmentId: string | null

toSeq

Deprecated
  • Deprecated

    Returns

    Keyed<string, unknown>

    Deprecated

    Not part of the collection API the Nutrient Web SDK supports. Use entries().

  • Type Parameters

    K
    extends keyof { … }

    Parameters

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

    Returns

    this
  • Parameters

    keyPathIterable<unknown>
    notSetValueunknown
    updater(value: unknown) => unknown

    Returns

    this
  • Parameters

    keyPathIterable<unknown>
    updater(value: unknown) => unknown

    Returns

    this
  • Note: Not all methods can be used on a mutable collection or within withMutations! Only set may be used mutatively.

    Parameters

    mutator(mutable: this) => unknown

    Returns

    this

    See Also

    • Map#withMutations