> 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/web/changelogs/version-8/v8-4/v8-4-0.md).

# Version 8.4.0 Changelog (2022-04-04)

World's #1 PDF SDK Library for Web, Mobile, Server, Desktop

## WebViewer Core

### New

* Added new [`ArcCreateTool`](https://sdk.apryse.com/api/web/Core.Tools.ArcCreateTool.html) and [`ArcMeasurementCreateTool`](https://sdk.apryse.com/api/web/Core.Tools.ArcMeasurementCreateTool.html) to allow users to create Arc annotations
* Added an indicator that is displayed when snapping is enabled for the current tool or selected annotation that indicates the point that will be snapped to when adding or modifying the annotation. [`AnnotationManager.setSnapDefaultOptions`](https://sdk.apryse.com/api/web/Core.AnnotationManager.html#setSnapDefaultOptions__anchor) allows you to change the indicator size, color and snapping threshold.
* Added [`DistanceMeasurementCreateTool.setLeaderLineDefaultOptions`](https://sdk.apryse.com/api/web/Core.Tools.DistanceMeasurementCreateTool.html#setLeaderLineDefaultOptions) to control whether leader lines are enabled, whether they should be created by default and what their length should be when annotations are created using the tool.
* Added support for point snapping when adjusting the points of annotations that had been created with a tool that enabled snapping
* Added support for editing, adding and removing links when in content editing mode
* Added [`Core.MeasurementManager`](https://sdk.apryse.com/api/web/Core.MeasurementManager.html) with APIs related to annotation and tool style syncing
* Added new APIs [`SignatureWidgetAnnotation.getAssociatedSignatureAnnotation`](https://sdk.apryse.com/api/web/Core.Annotations.SignatureWidgetAnnotation.html#getAssociatedSignatureAnnotation__anchor) and [`SignatureWidgetAnnotation.setAssociatedSignatureAnnotation`](https://sdk.apryse.com/api/web/Core.Annotations.SignatureWidgetAnnotation.html#setAssociatedSignatureAnnotation__anchor) to manage the `annot` property instead of having only the property itself
* Added new APIs [`DocumentViewer.getPDFCoordinatesFromMouseEvent`](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#getPDFCoordinatesFromMouseEvent__anchor) and [`DocumentViewer.getViewerCoordinatesFromMouseEvent`](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#getViewerCoordinatesFromMouseEvent__anchor) to make converting from mouse coordinates easier
* Added `isSmoothScroll` option for [`AnnotationManager.jumpToAnnotation`](https://sdk.apryse.com/api/web/Core.AnnotationManager.html#jumpToAnnotation) API for scrolling the viewer smoothly when jumping to an annotation
* Added `isSmoothScroll` parameter to [`DocumentViewer.setCurrentPage`](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#setCurrentPage) for scrolling the viewer smoothly when setting the current page
* Updated the `DistanceMeasurementCreateTool` behavior so that annotations created will not have their text displayed upside down.
* Added new API [`Core.enableWorkerLogs`](https://sdk.apryse.com/api/web/Core.html#.enableWorkerLogs__anchor) to turn on PDF worker logs which can be useful for debugging issues
* Added new API [`Document.setTextExtractorProcessingFlags`](https://sdk.apryse.com/api/web/Core.Document.html#setTextExtractorProcessingFlags__anchor) which lets you change the way the text is processed and extracted from the document
* Added support for automatically setting the filename of the document if the `Content-Disposition` header was set
* Added grayscale mode APIs on `DocumentViewer`: [`enableGrayscaleMode`](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#enableGrayscaleMode__anchor), [`disableGrayscaleMode`](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#disableGrayscaleMode__anchor), [`enableGrayscaleAnnotationsMode`](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#enableGrayscaleAnnotationsMode__anchor) and [`disableGrayscaleAnnotationsMode`](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#disableGrayscaleAnnotationsMode__anchor)
* Added support for handling internal links inside an office document

### Fixes

* Fixed issue that when deleting a page, the bookmark of the deleted page still shows
* Fixed issue that with calling `extractPages` with page number greater than the page count and `loadAsPDF` true
* Fixed issue where measurement arrow tips would slightly poke past leader lines
* Fixed issue where warning is displayed if full API is enabled and the document loaded is not a PDF
* Fixed issue where automatic linkifying of text didn't work if the link was uppercase
* Fixed issue where setting a custom external path for office documents wasn't applied correctly
* Fixed issue with form field placeholders when moving across pages
* Fixed issue with embedded JavaScript where the correct type wasn't given for numbers in text fields
* Fixed issue where error is thrown when deleting hundreds of pages from thumbnail panel
* Fixed issue with setting hour and minute when selecting a date or today
* Fixed i18n locale issue in date picker when there is an invalid date
* Fixed issue that Cloudy Area Measurement Tool not in generated TypeScript file
* Fixed issue where if the value returned from getDisplayAuthor has changed then the author name wouldn't update in the notes panel
* Fixed issue where editing text on a particular document would cause some characters to be missing
* Fixed Windows touch device error
* Fixed issues where loading documents quickly with the full API enabled could cause errors in the console
* Fixed issue where XOD transparency groups were not handled properly when constructing text information
* Fixed issue where 3D annotations wouldn't appear in IE11

## WebViewer UI

### New

* Added a new redaction panel which only displays redaction annotations and includes search functionality. Users can search for predetermined patterns and mark for redaction, as well as redact directly from this panel.
* Added a new document crop popup which allows users to switch between cropping an entire document or an individual page, adjust the size of the crop using input fields, change the units of measurement being shown in the input fields, and use an auto-trim to crop the document to a preset size.
* Added new language switcher for switching the current language
* Updated UI styles for content edit modal
* Updated UI for file attachments with the multi-tab feature
* Added support for displaying measurements with imperial units and fractions
* Added new APIs on the [`UI.Fonts`](https://sdk.apryse.com/api/web/UI.html#.Fonts) namespaces to get, add, updated and remove fonts for the UI related to annotations
* Added new API [`UI.VerificationOptions.loadTrustList`](https://sdk.apryse.com/api/web/UI.VerificationOptions.html#.loadTrustList__anchor) so that you can store and load inputted items
* Added new API [`UI.getAvailableLanguages`](https://sdk.apryse.com/api/web/UI.html#.getAvailableLanguages__anchor) to return all available languages as a list
* Added new API [`UI.willUseEmbeddedPrinting`](https://sdk.apryse.com/api/web/UI.html#.willUseEmbeddedPrinting__anchor) which returns true if embedded printing will be used
* Added new feature toggle to turn on/off multi-tab `UI.enableFeatures(['MultiTab'])`
* Added new [`UI.TabManager`](https://sdk.apryse.com/api/web/UI.TabManager.html) APIs `deleteTab` and `addTab` to manipulate tabs
* Added a new File Attachment view button while multi-tab is on
* Added a new checkbox for creating new tabs that specifies whether to open tab immediately
* Added support for printing in grayscale mode if `DocumentViewer.enableGrayscaleMode` or `DocumentViewer.enableGrayscaleAnnotations` was enabled

### Fixes

* When hotkeys are disabled, also remove the shortcut from the tooltips
* Fixed issue that there's no data element for Sort Container in Notes Panel
* Fixed issue where 'setTheme' in TypeScript reports an error with the parameter type


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.apryse.com/web/changelogs/version-8/v8-4/v8-4-0.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
