Nutrient Web SDK

Class TextSelection

Information about the currently selected text in the PDF. You can listen for changes using the NutrientViewer.EventName.TEXT_SELECTION_CHANGE.

Example

Read the currently selected text of an Instance

const textSelection = instance.getTextSelection();
textSelection.getText().then(text => console.log(text));

Register a "textSelection.change" event listener

instance.addEventListener("textSelection.change", (textSelection) => {
  if (textSelection) {
    console.log("text is selected");
  } else {
    console.log("no text is selected");
  }
});
Class

Hierarchy

RecordTextSelection

Properties

string

The NutrientViewer.TextLine#id of the last text line of this text selection.

The HTML Text node at the end of this text selection.

number

The HTML Text node offset of at the end of this text selection.

number

The page index where the text selection ends.

number

The NutrientViewer.TextLine#id of the last text line of this text selection.

Returns the bounding box in client coordinates of the current text selection, or null if the selection has been programmatically collapsed.

Example

const textSelection = instance.getTextSelection();
textSelection.getBoundingClientRect().then(rect => console.log(rect));
() => Promise<NutrientViewer.Immutable.List<{ … }>>

Returns the individually selected text rectangles in the PDF page space for each page. This can be used to create e.g. NutrientViewer.Annotations.MarkupAnnotations at the current selection.

Example

const textSelection = instance.getTextSelection();
textSelection.getSelectedRectsPerPage().then(rectsPerPage => {
rectsPerPage.map(({ pageIndex, rects }) => {
// We need to create one annotation per page.
const annotation = new NutrientViewer.Annotations.HighlightAnnotation({
pageIndex,
boundingBox: NutrientViewer.Geometry.Rect.union(rects),
rects,
});
instance.create(annotation);
});
});

Returns an immutable list of all NutrientViewer.TextLines of this text selection.

Example

const textSelection = instance.getTextSelection();
textSelection.getSelectedTextLines().then(lines => console.log(lines));
() => Promise<string>

Returns the text of this text selection. Text blocks will be joined by a new line character (\n).

Example

const textSelection = instance.getTextSelection();
textSelection.getText().then(text => console.log(text));
string

The NutrientViewer.TextLine#id of the first text line of this text selection.

The HTML Text node at the start of this text selection.

number

The HTML Text node offset of at the start of this text selection.

number

The page index where the text selection starts.

number

The NutrientViewer.TextLine#id of the first text line of this text selection.

Immutable Record API

31
string

The name provided to Record(values, name) can be accessed with displayName.

  • Returns

    IterableIterator<
    [
    keyof { … },
    | string
    | number
    | Text
    | (() => Promise<string>)
    | (() => Promise<NutrientViewer.Immutable.List<NutrientViewer.TextLine>>)
    | (() => Promise<NutrientViewer.Geometry.Rect | null>)
    | (() => Promise<NutrientViewer.Immutable.List<{ … }>>)
    | null
    ]
    >
  • Returns

    this

    See Also

    • Map#asImmutable

  • Returns

    this

    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
  • 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
    notSetValueunknown
    Optional

    Returns

    { … }[K]
  • Type Parameters

    T

    Parameters

    keystring
    notSetValueT

    Returns

  • Parameters

    keyPathIterable<unknown>

    Returns

    unknown
  • Parameters

    keystring

    Returns

    key is
    | "startTextLineId"
    | "startNestedContentBlockId"
    | "startPageIndex"
    | "startNode"
    | "startOffset"
    | "endNestedContentBlockId"
    | "endTextLineId"
    | "endPageIndex"
    | "endNode"
    | "endOffset"
    | "getText"
    | "getSelectedTextLines"
    | "getBoundingClientRect"
    | "getSelectedRectsPerPage"
  • Returns

    number
  • Parameters

    keyPathIterable<unknown>

    Returns

    boolean
  • Parameters

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

    Returns

    this
  • Parameters

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

    Returns

    this
  • Parameters

    keyPathIterable<unknown>
    ...collectionsunknown[]

    Returns

    this
  • Parameters

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

    Returns

    this
  • Parameters

    keyPathIterable<unknown>
    ...collectionsunknown[]

    Returns

    this
  • Parameters

    merger
    (oldVal: unknown, newVal: unknown, key: keyof { … }) => unknown
    ...collections
    (Iterable<[string, unknown], any, any> | Partial<{ … }>)[]

    Returns

    this
  • Type Parameters

    K
    extends keyof { … }

    Parameters

    keyK

    Returns

    this
  • Parameters

    keyPathIterable<unknown>

    Returns

    this
  • Type Parameters

    K
    extends keyof { … }

    Parameters

    keyK
    value
    { … }[K]

    Returns

    this
  • Parameters

    keyPathIterable<unknown>
    valueunknown

    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

    { … }
  • Shallowly converts this Record to equivalent native JavaScript Object.

    Returns

    { … }
  • Shallowly converts this Record to equivalent JavaScript Object.

    Returns

    { … }
  • Returns

    Keyed<
    keyof { … },
    | string
    | number
    | Text
    | (() => Promise<string>)
    | (() => Promise<NutrientViewer.Immutable.List<NutrientViewer.TextLine>>)
    | (() => Promise<NutrientViewer.Geometry.Rect | null>)
    | (() => Promise<NutrientViewer.Immutable.List<{ … }>>)
    | null
    >
  • Type Parameters

    K
    extends keyof { … }

    Parameters

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

    Returns

    this
  • Parameters

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

    Returns

    this
  • Returns

    boolean

    See Also

    • Map#wasAltered

  • 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