> For the complete documentation index, see [llms.txt](https://docs.apryse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apryse.com/appian/get-started/component-properties.md).

# Apryse Appian WebViewer Component Properties

Discover the properties of the Apryse Appian WebViewer Component, a wrapper around the WebViewer JavaScript library. Learn about its features, APIs, and how to enhance your web viewing experience. Con

## Apryse Appian WebViewer Component Properties

This guide outlines the existing properties of the Apryse Appian WebViewer Component. The component is a wrapper around the [WebViewer](/web/get-started/guides.md) JavaScript library. The properties expose some of the underlying WebViewer APIs/features while also providing some additional composed functionality.

{% hint style="warning" %}
The list may not be complete depending on the release version of the component. Also, certain deprecated properties may be omitted to encourage the use of newer properties.
{% endhint %}

While not everything in WebViewer is exposed, we are always open to adding more properties to the component. If you have a feature request, please contact us at [support@apryse.com](https://docs.apryse.com).

### General properties

#### hidden

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Whether or not the component is visible. This uses WebViewer's preferred way to hide the viewer. This can also be helpful for running background process via the config file in the background of a page.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Preload WebViewer](/web/best-practices/best-practices.md#preload-webviewer)
  {% endhint %}

#### url

* Type: Text?list (input-only)
* Required: No
* Requires page refresh: Yes

The URL of the document you are trying to view. There is a chance a CORS error might come up if the document is not hosted on the same domain as the Appian site or if the proper CORS headers are not set on the file host server.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Loading from URL](/web/open-save-document/open/url.md)
  {% endhint %}

#### key

* Type: Text (input-only)
* Required: No
* Requires page refresh: Yes

A valid license key for WebViewer. They key can be entered through the connected systems as well to avoid exposing the key in the interface.

Your free trial includes unlimited trial usage and support from solution engineers. There will be a watermark rendered on your documents. To remove the watermark, you will need to [purchase a license key](https://apryse.com/form/contact-sales). [More information on WebViewer pricing](https://apryse.com/pricing) is available on our main site.

#### docAccessConnectedSystem

* Type: ConnectedSystem (input-only)
* Required: Yes
* Requires page refresh: Yes

The Document Access Connected System as an Appian constant. It is necessary for loading and saving documents stored in Appian. This also necessary for getting the license key securely from the connected systems if provided that way.

Please refer to the following sections below for more properties on loading and saving documents to Appian.

#### userDisplayName

* Type: Text (input-only)
* Required: No
* Requires page refresh: No

The name of the user who is making annotations. This is used when working with annotation permissions as well. Users cannot modify annotations made by other users unless they have the same display name.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Annotation Permissions](/web/annotation/annotationmanager/permissions.md)
* [Display Authors](/web/annotation/annotationmanager/display-authors.md)
  {% endhint %}

##

#### enableAnnotations

* Type: Boolean (input-only)
* Required: No
* Default: true
* Requires page refresh: No

Toggle whether annotations are visible in WebViewer. This will hide/show annotations rendered in the document.

{% hint style="info" %}
**Relevant WebViewer guides**

* [DocumentViewer.enableAnnotations](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#enableAnnotations)
* [DocumentViewer.disableAnnotations](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#disableAnnotations)
  {% endhint %}

##

#### enableMeasurement

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Toggle whether measurement tools are enabled in WebViewer. This will hide/show the measurement tools in the ribbon header as well.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Measurement](/web/measurement/measurement-setup.md)
  {% endhint %}

#### enableMultiTabMode

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Switch to mutli-tab mode to view multiple documents at the same time in a single instance. This can be helpful to avoid opening multiple viewers and save memory. Not compatible with semantic compare mode.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Multi-tab document viewing](/web/ui-customization/multi-tab.md#open-multiple-documents-in-webviewer)
  {% endhint %}

#### initialToolMode

* Type: Text (input-only)
* Required: No
* Requires page refresh: No

Provide a tool name to set the initial tool mode.

#### watermarkOptions

* Type: Dictionary (input-only)
* Required: No
* Requires page refresh: No

Specify options to draw a watermark over the document. Custom watermarks are only supported through the config file. This can be used to watermark generated documents. Please refer to the guide below for more details on the structure of the dictionary object.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Watermarking documents](/web/edit-page-content/watermarks.md#draw-text-as-watermark)
  {% endhint %}

#### enablePdfEditing

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: Yes

Enables editing of PDF content within WebViewer. Although WebViewer lets you rotate pages, this will allow full content editing of the actual text and other content within the PDF document. This is not compatible with certain modes.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Content editing](/web/edit-page-content/text-edit.md)
  {% endhint %}

#### enabledEventsMap

* Type: Dictionary (input-only)
* Required: No
* Requires page refresh: Yes

A dictionary that contains the events you want to enable, except for onInterval and onCustomEvent, which are not configurable. For example, {"onDocumentLoaded": true, "onAnnotationsLoaded": true}. This is required since events without a value will still send network requests to Appian.

#### debouncedEventDelay

* Type: Number (input-only)
* Required: No
* Default: 500
* Requires page refresh: Yes

The delay, in milliseconds, that the debounced events will wait before firing. This is useful to prevent too many events from firing at once. Default is 500ms.

#### customSubstituteFontURL

* Type: Text (input-only)
* Required: No
* Requires page refresh: No

Provide a secure, absolute HTTPS URL to where custom substitute fonts are hosted. These fonts are used when fonts are missing from the document. It is HIGHLY recommended to embed fonts into the document.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Font substitution](/web/get-started/faq/self-serve-substitute-fonts.md)
  {% endhint %}

#### timerInterval

* Type: Integer (input-only)
* Required: No
* Requires page refresh: No

The interval, in milliseconds, that the JavaScript timer will trigger `onInterval`. Can be useful to trigger refresh events or variable updates in Appian.

#### errorEventLevel

* Type: Text (input-only)
* Required: No
* Default: error
* Requires page refresh: No

The level of error events to log. Possible values are "error", and "warn". Default is "error". To get the logged events from the viewer, see the onError event.

### General events

#### onInterval

* Type: Event

Event that triggers when the timer interval is reached. You will get the uptime in milliseconds as a parameter. Can be useful to trigger refresh events or variable updates in Appian.

#### onRotationUpdated

* Type: Event

Event that triggers when the temporary viewer rotation is updated. This will not trigger on an actual page rotation. You will get the rotation as a dictionary parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  rotation: 1 // 1 for 90 degress CW
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onPageNumberUpdated

* Type: Event

Event that triggers when the current page number is updated. You will get the current page number as a dictionary parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  pageNumber: 2
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onTextSelected

* Type: Event

Event that triggers when text is selected. You will get the selected text, page number, and an array of objects representing the text location as a dictionary parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  text: "Important",
  pageNumber: 1,
  quads: [
    {x1: 57.39, y1: 434.37, x2: 189.02700000000002, y2: 434.37, x3: 189.02700000000002, y3: 395.58, x4: 57.39, y4: 395.58}
  ]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onAnnotationSelected

* Type: Event

Event that triggers when annotations are selected. You will get an array of annotation info dictionary objects as a parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
[
  {
    id: "aa9d15ae-46bd-f5df-9247-3c0d18c22959",
    type: "FreeHand",
    author: "Guest",
    contents: "",
    rect: {x1: 331.54982, y1: 372.95982000000004, x2: 403.51018, y2: 500.45018000000005}
  }
]
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onAnnotationDeselected

* Type: Event

Event that triggers when annotations are deselected. You will get an array of annotation info dictionary parameters as a parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
[
  {
    id: "aa9d15ae-46bd-f5df-9247-3c0d18c22959",
    type: "FreeHand",
    author: "Guest",
    contents: "",
    rect: {x1: 331.54982, y1: 372.95982000000004, x2: 403.51018, y2: 500.45018000000005}
  }
]
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onToolModeUpdated

* Type: Event

Event that triggers when the tool is swapped out. You will get the new and old tool names as a dictionary parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  nextToolName: "AnnotationCreateRectangle",
  previousToolName: "AnnotationCreateTextUnderline"
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onZoomUpdated

* Type: Event

Event that triggers when the zoom level is updated. You will get the zoom level as a dictionary parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  zoom: 0.7352254428341385
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onSearchResultsChanged

* Type: Event

Event that triggers when the search results are changed. You will get an array of search result dictionary objects as a parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
[
  {
    ambientStr: "6 Important Factors when Choosing a PDF Library ADAM PEZ",
    resultStr: "Important",
    resultStrStart: 2,
    resultStrEnd: 11,
    pageNum: 1,
    resultCode: 2,
    quads: [
      {x1: 57.39, y1: 434.37, x2: 189.02700000000002, y2: 434.37, gu: 189.02700000000002, an: 395.58, qx: 57.39, hu: 395.58}
    ],
    ambient_str: "6 Important Factors when Choosing a PDF Library ADAM PEZ",
    result_str: "Important",
    result_str_start: 2,
    result_str_end: 11,
    page_num: 1,
    aga: 3
  }
]
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onError

* Type: Event

Event that triggers when an error occurs in the component. You will get the error object as a dictionary parameter. Please get this error from the browser console or through this event to submit to support.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  componentMessage: "WebViewer Component Error",
  message: "Cannot read properties of null (reading 'getType')",
  stack: "..."
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

### Loading from Appian

#### appianDocId

* Type: Integer?list (input-only)
* Required: No
* Requires page refresh: No

An Appian document ID. You can pass an integer of a single document ID, or an array containing multiple IDs. For example, 1230 or {1221,1230}. If you pass multiple IDs, the documents will be merged into one.

#### loadAsPDF

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

When loading an Office document or image, also convert it to PDF for page manipulation. Semantic comparison requires two PDF documents. This property will help when one of the documents isn't a PDF.

#### searchTerm

* Type: Text (input-only)
* Required: No
* Requires page refresh: No

This string represents a search term that will automatically search on document load. You can use this if you want to perform a search or to highlight a specific term on load. This property support regex expressions as well.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Searching for text](https://docs.apryse.com/appian/get-started/spaces/X9YnTSKIHvV7m0A36LbO/pages/UDkJhbrEeQPvCBOSq72O#webviewer-ui)
  {% endhint %}

### Load events

#### onDocumentLoaded

* Type: Event

An event that triggers when a document is loaded. The event provides the document name, type, and page count as a dictionary parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  documentType: "pdf",
  pageCount: 9,
  filename: "WT demo-annotated.pdf"
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onPageComplete

* Type: Event

An event that triggers when a page is completely rendered. You will get the page number as a dictionary parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  pageNumber: 9
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onAnnotationsLoaded

* Type: Event

An event that triggers when annotations are loaded. You will get a dictionary with the annotation count on each page. The page number is the key.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  '1': 3,
  '2': 7,
  '3': 3,
  '4': 4,
  '6': 1,
  '7': 1,
  '8': 3,
  '9': 1
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onDocumentUnloaded

* Type: Event

An event that triggers when the document is unloaded. You will get the document name, type, and page count as a dictionary parameter.

{% hint style="info" %}
**Relevant WebViewer guides**

* [documentLoaded](/web/events/loading-events.md#documentviewerdocumentloaded)
* [annotationsLoaded](/web/events/loading-events.md#documentviewerannotationsloaded)
* [pageComplete](/web/events/loading-events.md#documentviewerannotationsloaded)
  {% endhint %}

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  documentType: "pdf",
  pageCount: 9,
  filename: "WT demo-annotated.pdf"
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

### Saving to Appian

#### documentFolder

* Type: Integer (input-only)
* Required: No
* Requires page refresh: No

The ID of the folder you are trying to save the new document to. This is only used when saving a document to Appian.

#### uploadChunkSize

* Type: Integer (input-only)
* Required: No
* Requires page refresh: No

The size of the document chunks (in bytes) that will be transferred to the connected systems for saving. This should only be used if the connected systems on the Appian side is running out of memory. Lowering the value will reduce the memory usage, but will increase the number of requests made to the connected systems and slow down the saving process.

#### saveAsFileNameTemplate

* Type: Text (input-only)
* Required: No
* Requires page refresh: No

A template string that can be used as the filename when using the UI SaveAs option. Use the {filename} template key to fill in with the current filename. You can use this to prefill the new filename with a desired format for the user.

#### disableSaveFilenameInput

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Disables the filename input in the SaveAs modal to prevent users from changing it. Use this if you have a set format for the new filename, and do not want users to change it.

#### enforceNewSaveAsFilename

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No (requires reopening the modal)

Disables the save button on the SaveAs modal if the filename was not changed. This is to force the user to name changes to the new filename.

#### removeSaveAsFormatOptions

* Type: Text?list (input-only)
* Required: No
* Default: null
* Requires page refresh: No (requires reopening the modal)

Removes certain format options in the SaveAs modal to prevent users from using it. Valid options are "pdf", "office", and "image".

#### enableExtractPagesToAppian

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: Yes

If enableExtractPagesToAppian is true, the user will be able to extract pages to Appian as a new PDF.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Extract Pages](/web/page-manipulation/split.md)
  {% endhint %}

#### xfdfAnnotationData

* Type: Text (input-output)
* Required: No
* Requires page refresh: No

This input string is the XFDF that represents all annotations. WebViewer will import any annotations from this variable. If the user presses save annotations, it will save annotations to this variable.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Saving XFDF](/web/annotation/import-export.md)
* [XFDF format](/web/annotation/xfdf.md)
  {% endhint %}

#### autoExportXFDF

* Type: Boolean (input-only)
* Required: No
* Default: true
* Requires page refresh: No

Toggle auto exporting the XFDF annotation data to the `xfdfAnnotationData` parameter every time annotations are changed. You may want to disable this if you want to import XFDF with the property only, and avoid changes to a variable.

#### annotationCommands

* Type: Text?list (input-only)
* Required: No
* Requires page refresh: No

A list of annotation XFDF commands that WebViewer will import and replay. Each command is an XFDF string that represents an add, modify, or delete action.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Importing XFDF commands](/web/annotation/import-export.md#import-annotation-command-xfdf)
  {% endhint %}

### Save events

#### onSaveDocument

* Type: Event

Event that triggers when the document is saved. You will get the new/old document ID as a parameter.

#### onAnnotationsChanged

* Type: Event

Event that triggers when annotations are changed. You will get the exported XFDF, annotation command, and action as a dictionary parameter. You can decide which one to use or save depending on your use case.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Exporting XFDF commands](/web/annotation/import-export.md#export-annotation-command-xfdf)
  {% endhint %}

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  action: "add"
  xfdfString: "",
  xfdfCommand: ""
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onDocumentAltered

* Type: Event

Event that triggers when the document is altered (pages were changed, annotations were added, etc). This is more wide and general compared to other events. You will get the new document data as a base64 string as a parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  type: "annotationChanged",
  base64String: "JVBERi0xLjcNJeLjz9MNCjEgMCBvYmoN..."
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onPagesUpdated

* Type: Event

Event that triggers when pages in the document are added, removed, moved, or have their content changed. You will get a dictionary representing the changes as a parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  added: [],
  removed: [],
  moved: [],
  rotationChanged: [1],
  contentChanged: [1],
  annotationsChanged: []
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### onFieldChanged

* Type: Event

Event that triggers when a form field is changed. You will get the field name and value as a dictionary parameter.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  key: "Field1",
  value: "asdf"
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

### UI properties

#### enabledElements

* Type: Text?list (input-only)
* Required: No
* Requires page refresh: No

You can pass the data-elements you wish to enable as an array. For example, {"bookmarksPanel", "bookmarksPanelButton"}. To get data-elements, inspect the DOM in browser and find the right attribute.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Showing/Hiding elements](/web/ui-customization/hiding-elements.md)
  {% endhint %}

##

#### disabledElements

* Type: Text?list (input-only)
* Required: No
* Requires page refresh: No

You can pass the data-elements you wish to disable. For example, {"downloadButton", "printButton"}. To get data-elements, inspect the DOM in browser and find the right attribute.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Showing/Hiding elements](/web/ui-customization/hiding-elements.md)
  {% endhint %}

##

#### defaultLanguageCode

* Type: Text (input-only)
* Required: No
* Requires page refresh: No

Provide a supported language code (ex. en, de) to use that language as the starting language. To find the supported language code you want, you need to reference the ISO 639 language codes. The list of supported languages can be found in the settings panel of WebViewer. The code is also available for each of the languages by looking at the data-element attribute of the list elements in the settings panel.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Localization](/web/ui-customization/localization/languages-and-internationalization.md)
  {% endhint %}

##

#### disableAppianMenu

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Disable the Appian header menu (the blue button in the right) and return the options under this menu back into the WebViewer header.

#### useModularUI

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: Yes

Toggle the UI to use the modular UI instead of the default UI. Modular UI is more customizable.

#### activeRibbonItem

* Type: Text (input-only)
* Required: No
* Requires page refresh: No

Provide a toolgroup or ribbon name to set the active ribbon item. This is the same as the data-element attribute of the element you want to set as active.

#### initialZoomLevel

* Type: Integer (input-only)
* Required: No
* Requires page refresh: No

Provide a number to set the initial zoom level when a document loads (1.5 is 150% zoom). Note, this will trigger a zoom event if the event was enabled.

#### darkMode

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Toggle dark mode on or off.

#### notesInLeftPanel

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: Yes

Whether to move the notes panel with the annotations from the right to the left panel instead.

#### customCSSFileId

* Type: Integer (input-only)
* Required: No
* Requires page refresh: Yes

Customize the styles in WebViewer by providing the Appian file ID of your own CSS.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Customizing styles](/web/ui-customization/customizing-styles.md#changing-css-properties)
  {% endhint %}

### Office Editor

#### enableOfficeEditing

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: Yes

When an Office file is loaded (excluding legacy Office documents), WebViewer will change to Office editing mode and allow users to edit content. This is not compatible with certain modes.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Create and edit Word](/web/docx-editor/edit-docx-file.md)
  {% endhint %}

#### initialOfficeEditorMode

* Type: Text (input-only)
* Required: No
* Requires page refresh: No

Provide a string to set the initial Office editor mode after loading a document. Possible values are "edit", "review", "viewOnly", and "preview". Default is "edit".

### Office Editor events

#### onTrackedChangesUpdated

* Type: Event

Event that triggers when tracked changes are updated. You will get the current set of tracked changes object as a parameter. Note this is not the delta.

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  pageNumber: 1,
  previousTrackedChanges: [
    {
      id: 0,
      author: "Guest",
      date: "2025-05-27T17:51:17.000Z",
      plaintext: "a",
      type: "inserted"
    }
  ],
  trackedChanges: [
    {
      id: 0,
      author: "Guest",
      date: "2025-05-27T17:51:17.000Z",
      plaintext: "aa",
      type: "inserted"
    }
  ],
  delta: {}
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

### Redaction

#### enableRedaction

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Toggle whether redaction is enabled in WebViewer. This will hide/show the redaction tools in the ribbon header as well.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Redaction](/web/redaction/redaction-setup.md)
  {% endhint %}

#### redactionTerm

* Type: Text (input-only)
* Required: No
* Requires page refresh: No

This string represents a search and redaction term. This will make WebViewer search and add a redaction for that term automatically on document load. This can take a string or a regular expression.

#### autoApplyRedactionTerm

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Whether to automatically apply the redaction term on document load. This is used in conjunction with `redactionTerm`.

### Document generation

#### templateData

* Type: Dictionary (input-only)
* Required: No
* Requires page refresh: Yes (requires a refresh to fill in new values)

An key-value object that represents the values to be filled into an Office template. See the guide below for more details on the template and what this object should look like.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Template generation](/web/generate/template-based-generation/generate-via-template.md)
  {% endhint %}

##

#### enableDocumentGeneration

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Enables the modal that allows users to map values to an Office template field's manually. This is not required for automatic document generation and template filling.

### Semantic comparison

#### enableSemanticCompareMode

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: Yes

Enable the semantic compare mode in WebViewer. This is helpful in comparing two PDF documents and highlighting differences. You will need to use the `loadAsPDF` property for any documents that isn't a PDF. This is not compatible with multi-tab mode.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Semantic text compare](https://docs.apryse.com/appian/get-started/spaces/X9YnTSKIHvV7m0A36LbO/pages/Zun6h2qiy4HgRKrfcX5S#creating-a-new-document-with-differences)
  {% endhint %}

##

#### automaticSemanticCompare

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Toggle whether the semantic comparison should automatically start after the documents are loaded. Normally, the user has to press the compare button to start the comparison.

### Load events

#### onCompareAnnotationsLoaded

* Type: Event

An event that triggers when annotations are loaded in compare mode.

### Mentions

#### mentionableUsers

* Type: Dictionary?list (input-only)
* Required: No
* Requires page refresh: No

A list of dictionary objects describing users that can be mentioned in annotation comments. Mentioning a user will trigger a `onMentionsChanged` event. Please refer to the guide below for more details on the structure of the dictionary object.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Mentions](/web/collaboration/mentions-api.md#import-user-data-into-the-viewer)
  {% endhint %}

##

### Mention events

#### onMentionsChanged

* Type: Event

Event that triggers when mentions are changed. You will get the mentions data as a dictionary parameter. The data structure is described in the guide below. You can use this to trigger notifications through Appian to notify users that they have been mentioned.

{% hint style="info" %}
**Relevant WebViewer guides**

* [mentionChanged](https://sdk.apryse.com/api/web/UI.MentionsManager.html#event:mentionChanged)
  {% endhint %}

{% tabs %}
{% tab title="JavaScript" %}
{% code lineNumbers="true" %}

```js
{
  mentions: [
    {
      name: "test",
      email: "test@test.com",
      id: "test@test.com",
      annotId: "aa9d15ae-46bd-f5df-9247-3c0d18c22959"
    }
  ],
  action: "add"
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

### Signature workflow

#### enableSignatureRequests

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Enables the signature request panel to start a workflow, then assign, and request signatures from other users. This can be used to start a signature workflow for a form that requires signatures from multiple users.

#### currentSignatureWorkflow

* Type: Dictionary (input-output)
* Required: No
* Requires page refresh: Yes

Current signature workflow object containing the associated document ID, initiator, array of signature requests, and XFDF file ID.

#### signingUsers

* Type: Dictionary?list (input-only)
* Required: No
* Requires page refresh: Yes

A list of dictionary objects describing users that can be requested to sign the document. The objects follow a similar object to mentionable users.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Mentions](/web/collaboration/mentions-api.md#import-user-data-into-the-viewer)
  {% endhint %}

##

#### xfdfDocumentFolder

* Type: Integer (input-only)
* Required: No
* Requires page refresh: No

This is the ID of the folder where the XFDF of annotations will be stored. Due to string limitations in databases, the annotation XFDF is stored in a separate file instead. When in the context of signature workflows, this is the folder where the XFDF of each signature will be stored. The file ID will be stored in the signature workflow object.

### Signature workflow events

#### onStartSignatureWorkflow

* Type: Event

Event that triggers when a signature workflow is started. You will get the workflow object as a parameter.

#### onSelectAssignee

* Type: Event

Event that triggers when the user that started a workflow selects an assignee for a particular signature field. You will get the widget ID and assignee as a parameter. This can be stored into the workflow.

### Digital Signatures

#### enableSignatureEncryption

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Enables a modal to allow users to provide a digital certificate to encrypt the signatures on a document and encrypts the fields to detect modifications. This is useful after a signature workflow to certify the document and guarantee the signatures are valid.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Digital signature](https://docs.apryse.com/appian/get-started/spaces/X9YnTSKIHvV7m0A36LbO/pages/xbgLRnO4VbqRiq0UmnEQ#document-timestamping-dts)
  {% endhint %}

##

### Customization & specific use cases

#### configFileId

* Type: Integer (input-only)
* Required: No
* Requires page refresh: Yes

Provide an ID to a JavaScript file that will be executed within the WebViewer iframe. The Appian component is but only a wrapper around the WebViewer component with a multitude of APIs. Using this config file gives more access to APIs for customizations and actions. This will require some knowledge of JavaScript and WebViewer APIs. Check out the guide below for more details on the config file.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Config file](/web/advanced/config-files.md)
  {% endhint %}

##

#### customData

* Type: Dictionary (input-only)
* Required: No
* Requires page refresh: Yes

An object that will be passed to the config file as a parameter. If you have some customized actions or processes that require information, you can pass it in through this property.

{% hint style="info" %}
**Relevant WebViewer guides**

* [Config file custom data](/web/advanced/config-files.md#passing-custom-data)
  {% endhint %}

##

### Custom events

#### onCustomEvent

* Type: Event

Event that can be triggered from the config file by the user as necessary to avoid triggering other existing events. The parameter could be any object. It is highly recommended to use a type property to distinguish the event type.

### Debugging

#### enableConsoleClear

* Type: Boolean (input-only)
* Required: No
* Default: false
* Requires page refresh: No

Enable clearing the browser console when the component updates. This should be enabled for SPA applications to release references tied to the console.

#### debugLog

* Type: Dictionary (input-only)
* Required: No
* Requires page refresh: No

A dictionary object that a user can use to check Appian values in JavaScript. This is useful for debugging and checking values in the console. The object will be logged to the console when the component is loaded. You can check the some of the parameter objects like watermarkOptions, templateData, etc to make sure they are being passed correctly.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.apryse.com/appian/get-started/component-properties.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
