> 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-3/v8-3-0.md).

# Version 8.3.0 Changelog (2022-02-11)

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

## WebViewer Core

### New

* Added support for PDF Text and Image Editing. The [Core.ContentEdit](https://sdk.apryse.com/api/web/Core.ContentEdit.html) namespace was added with new APIs ([preloadWorker](https://sdk.apryse.com/api/web/Core.ContentEdit.html#.preloadWorker__anchor), [updateDocumentContent](https://sdk.apryse.com/api/web/Core.ContentEdit.html#.updateDocumentContent__anchor) and [getDocumentContent](https://sdk.apryse.com/api/web/Core.ContentEdit.html#.getDocumentContent__anchor)). The [getContentEditType](https://sdk.apryse.com/api/web/Core.Annotations.Annotation.html#getContentEditType__anchor) and [isContentEditPlaceholder](https://sdk.apryse.com/api/web/Core.Annotations.Annotation.html#isContentEditPlaceholder__anchor) APIs were added to the Annotation class and the [ContentEditTool](https://sdk.apryse.com/api/web/Core.Tools.ContentEditTool.html) class was added. See the [editing guide](/web/edit-page-content/text-edit.md) for more details.
* Added support for loops and conditionals when filling MS Office templates. See the [officeOptions.templateValues](https://sdk.apryse.com/api/web/Core.html#.TemplateData)
* Significant Optimizations for PDF client-only backend. On average this reduced page rendering time by 15-25%.
* Updated the version of `PDFNet` used to version 9.2. All Apryse SDK 9.2 APIs are available with the full API.
* Added ability to move annotations between pages
* Updates to speed up rendering when PDF data is not downloaded yet
* Added support for sound annotations audio playback
* Improvements to how Webviewer handles "comb" text fields
* Added getters and setters for both Freehand creation tools' `createDelay` and `simplifyPen` ([getCreateDelay](https://sdk.apryse.com/api/web/Core.Tools.FreeHandCreateTool.html#getCreateDelay__anchor), [setCreateDelay](https://sdk.apryse.com/api/web/Core.Tools.FreeHandCreateTool.html#setCreateDelay__anchor), [getSimplifyPen](https://sdk.apryse.com/api/web/Core.Tools.FreeHandCreateTool.html#getSimplifyPen__anchor), [setSimplifyPen](https://sdk.apryse.com/api/web/Core.Tools.FreeHandCreateTool.html#setSimplifyPen__anchor))
* Added support to change the rasterizer options when working with XOD or WebViewer Server via [updateRasterizerOptions](https://sdk.apryse.com/api/web/Core.Document.html#updateRasterizerOptions__anchor)
* Added API to extract text given a Rect and a Page ([getTextByPageAndRect](https://sdk.apryse.com/api/web/Core.Document.html#getTextByPageAndRect__anchor))
* Added constants for color post process modes ([ColorPostProcessMode](https://sdk.apryse.com/api/web/Core.html#.ColorPostProcessMode__anchor))
* Add fill color support for checkboxes
* Improvements to performance when generating thumbnails and when fetching thumbnails from WebViewer Server
* General improvements in the API documentation
* Added constants to be used as the value of WebViewer's instantiation options `preloadWorker` ([WebViewer.WorkerTypes](https://sdk.apryse.com/api/web/global.html#WorkerTypes__anchor)) and `backendType` ([WebViewer.BackendTypes](https://sdk.apryse.com/api/web/global.html#BackendTypes__anchor)).
* Added the [setCustomHandlers](https://sdk.apryse.com/api/web/Core.Annotations.SelectionModel.html#setCustomHandlers__anchor) API to customize annotation selection model handlers
* Added support for button widgets with the embedded JS `Print` action
* Added support for embedded JS `launchURL`
* Added function called [setCustomControlHandleDrawHandler](https://sdk.apryse.com/api/web/Core.Annotations.html#.setCustomControlHandleDrawHandler__anchor) to customize appearance of annotation control handles
* Added function called [setCustomCreateSignHereElementHandler](https://sdk.apryse.com/api/web/Core.Annotations.html#.setCustomCreateSignHereElementHandler__anchor) to customize the HTML element of `Sign Here` placeholders
* Renamed method that returns the WebViewer Server annotation manager from `getBlackBoxAnnotationManager` to `getWebViewerServerAnnotationManager`
* Renamed method to export and import annotation commands from `importAnnotCommand`/`exportAnnotCommand` to `importAnnotationCommand`/`exportAnnotationCommand`
* Renamed function that gets the value of the specified hash parameter from the window URL from `getHashParam` to `getHashParameter`
* Added API to enable and disable annotations after instantiating WebViewer ([enableAnnotations](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#enableAnnotations__anchor) and [disableAnnotations](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#disableAnnotations__anchor))
* Renamed functions that are used to convert an MS Office file to PDF from `office2PDF` and `office2PDFBuffer` to `officeToPDF` and `officeToPDFBuffer`
* Renamed Document asynchronous methods from `loadCanvasAsync`, `loadThumbnailAsync` and `documentCompletePromise` to `loadCanvas`, `loadThumbnail` and `getDocumentCompletePromise`
* Renamed DocumentViewer method to get the zoom level from `getZoom` to `getZoomLevel`
* Renamed Annotation method that tells if the annotation is part of the original document from `getInternal` to `isInternal`
* Renamed function to get the position of a bookmark from `getVPos` and `getHPos` to `getVerticalPosition` and `getHorizontalPosition`
* Added function called [setCustomCreateInnerElementHandler](https://sdk.apryse.com/api/web/Core.Annotations.html#.setCustomCreateInnerElementHandler__anchor) to change createInnerElement in order customize widget annotations' HTML element
* Renamed the event that is triggered when a file is downloaded from `FINISHED_SAVING_PDF` to `FILE_DOWNLOADED`
* Added support for checking and unchecking checkboxes with the spacebar key
* Added API to customize the text overlay for Redaction annotations
* Added support for annotations with inline appearances when loading MS Office documents
* Added API to set the maximum dimension size when creating signature annotations by dragging a signature from the tool bar [setDefaultSignatureOptions](https://sdk.apryse.com/api/web/Core.Tools.SignatureCreateTool.html#setDefaultSignatureOptions__anchor)
* Added getters and setters for the properties `BorderStyle` ([setBorderStyle](https://sdk.apryse.com/api/web/Core.Annotations.RectangleAnnotation.html#setBorderStyle__anchor) and [getBorderStyle](https://sdk.apryse.com/api/web/Core.Annotations.RectangleAnnotation.html#getBorderStyle__anchor)) and `CloudIntensity` ([setCloudIntensity](https://sdk.apryse.com/api/web/Core.Annotations.RectangleAnnotation.html#setCloudIntensity__anchor) and [getCloudIntensity](https://sdk.apryse.com/api/web/Core.Annotations.RectangleAnnotation.html#getCloudIntensity__anchor)) of the Rectangle annotation. The same applies to the Polygon annotation.
* Added API to set a function to be called before submitting forms ([setBeforeSubmitFormActionCallback](https://sdk.apryse.com/api/web/Core.AnnotationManager.html#setBeforeSubmitFormActionCallback__anchor))
* Added the `ACCEPTED_FILE_SIZE` property to limit file size when using the [StampCreateTool](https://sdk.apryse.com/api/web/Core.Tools.StampCreateTool.html#main) or the [SignatureCreateTool](https://sdk.apryse.com/api/web/Core.Tools.SignatureCreateTool.html#main)
* Added support for password obfuscation in text widgets
* Improved performance for rendering annotations with transparent fill color
* Added new API called [setCustomOnTriggeredHandler](https://sdk.apryse.com/api/web/Core.Actions.html#.setCustomOnTriggeredHandler__anchor) to set a custom onTrigger handler for `Actions`
* Added support for embedded field formatters

### Fixes

* Fixed issue with the undo action that would not undo Freehand and Freehand Highlight annotations if the undo button was clicked in a short period of time after the annotation is created
* Fixed issue where watermarks weren't visible when downloading an MS Office file as PDF
* Fixed issue with re-importing Freetext annotations exported by WebViewer when using WebViewer Server
* Fixed issue where altering the `display` property within embedded javascript would result in wrong behavior
* Fixed issue where the annotation placeholder would get removed if the signature's associated annotation got removed
* Fixed issue where the [drawAnnotations](https://sdk.apryse.com/api/web/Core.AnnotationManager.html#drawAnnotations) would wait for the current drawAnnotation call to finish even if the `overrideCanvas` option was passed
* Removed unnecessary warning about WebViewer being on a different domain when using a config file
* Fixed issue where [documentCompletePromise](https://sdk.apryse.com/api/web/Core.Document.html#documentCompletePromise) could be undefined when the document was first created
* Fixed issue where the iframe DOM wasn't accessible immediately after the WebViewer promise resolved
* Fixed issue where documents with a specific type of shading wouldn't render properly
* Added offset to multiline text widget in order to match the annotation appearance in other PDF viewers
* Fixed issue where serializing an annotation could mark the annotation as modified
* Fixed issue where XOD Freetext annotations were not breaking lines properly
* Fixed issue where the freeform rotation control handle would not be displayed if the annotation has the NoResize flag set to true
* Fixed issue where custom headers were not included in HEAD requests to get the content type
* Fixed issues with annotations being duplicated after editing and text being selected in the wrong spot
* Fixed race condition when deleting and re-adding annotation in a very short period of time
* Fixed issue where child fields were not updating their visibility with respect to their parents
* Fixed issue where an error is thrown when text is marked for redaction using the Text popup tools
* Fixed issue where line annotation prototype was closed for changing constants like FONT\_SIZE
* Fixed issue with the offset difference between the Freetext annotation and its edit box
* Fixed issue with the watermark placement on rotated pages when downloading documents
* Fixed issue where the [annotationChanged](https://sdk.apryse.com/api/web/Core.AnnotationManager.html#event:annotationChanged) event was being triggered more than once on some cases with grouped annotations
* Fixed issue where explicitly passing `undefined` for `width`, `height` or `zoom` to [loadCanvasAsync](https://sdk.apryse.com/api/web/Core.Document.html#loadCanvasAsync) would return a canvas of the wrong size
* Fixed issue where the label text for redaction annotations is not showing the correct font size
* Fixed issue where if WebViewer Server was used and `forceClientSideInit` or `fullAPI` was true, then pages would get rotated twice
* Fixed issue where an infinite loop would occur sometimes while editing textarea widgets
* Fixed issue where if no license key was passed and a custom UI was used inside a cross origin iframe then WebViewer would get stuck
* Fixed issue where [updateRasterizerOptions](https://sdk.apryse.com/api/web/Core.Document.html#updateRasterizerOptions) would not behave as expected in some cases
* Fixed issue where the WebViewer default options would sometimes overide changes set right in the beginning of the WebViewer instantiator callback
* Fixed issue where reloading freeform rotated Freetext annotations would generate unexpected appearances
* Fixed issue where WebViewer could throw an error when creating checkbox widgets programatically
* Fixed typo on `syncNamespaves` API. It's now `syncNamespaces`.
* Fixed issue where checkboxes would still be greyed out after setting its `ReadOnly` flag to false
* Fixed issue where zoom level becomes NaN after calling [jumpToAnnotation](https://sdk.apryse.com/api/web/Core.AnnotationManager.html#jumpToAnnotation__anchor)
* Fixed issue where selecting a XOD outline/bookmark would cause all other bookmarks at the same level to appear selected
* Fixed issue where [toRect](https://sdk.apryse.com/api/web/Core.Math.Quad.html#toRect__anchor) was returning wrong values
* Fixed issue where WebViewer would throw an error when hovering over Redaction annotations with overlay text
* Fixed issue where, in some cases, the value changed events were not being triggered when text field values were changed
* Fixed issue where the text highlighting after a search was off for some documents
* Fixed issue where the downloaded document would not have the watermarks previously set
* Fixed issue where the coordinates would be off when using a custom UI outside an iframe in some cases
* Fixed issue with reloading a document right after saving it while in `Form Builder` mode
* Fixed issue with date picker widgets not being re-rendered in all scenarios where they should have been
* Fixed issue where the following line would not be highlighted when searching for text that contains a split word
* Fixed issue where if you zoom into an input box so it extends past your viewport, then type in the box, if it overflows, it loses focus
* Fixed issue with clouds closing all the time even during the creation phase
* Fixed border shape of required radio buttons
* Fixed issue where the Freetext annotation's draw function didn't restore the canvas context
* Fixed issue where new rubber stamps would have empty author
* Fixed issue where, in some cases, the `Sign Here` placeholder would still be visible even after signing it
* Removed extra sticky create tool `annotationCreated` event
* Fixed timing issue where if a request is made early and then cancelled it isn't actually cancelled properly
* Fixed issue where calling `exportAnnotations` after a document was closed would throw an error
* Fixed issue where downloading a document with a Freetext annotation in Internet Explorer wouldn't work
* Fixed issue where freetext annotations weren't editable in Internet Explorer
* Fixed issue with PWA application not caching properly

## WebViewer UI

### New

* Added content edit tool button in the "Edit" toolbar. Content edit placeholder annotations can be edited by either double clicking or clicking to select and pressing the edit button in the annotation popup.
* Added better placement for the ribbons by centering them with there is enough space
* Added constants to be used as the argument of [setTheme](https://sdk.apryse.com/api/web/UI.html#.setTheme)
* Added onError callback as an option to [loadDocument](https://sdk.apryse.com/api/web/UI.html#.loadDocument)
* Added API to reload the outlines called [reloadOutline](https://sdk.apryse.com/api/web/UI.html#.reloadOutline)
* Added a sourcemap file by default for easier debugging of UI code
* Added the pre-selection of a default rubber stamp for the rubber stamp tool
* Renamed function to set the notes panel sorting strategy from `setSortStrategy` to `setNotesPanelSortStrategy`.
* Added constants to be used as arguments for [setNotesPanelSortStrategy](https://sdk.apryse.com/api/web/UI.html#.setNotesPanelSortStrategy__anchor) and [setToolbarGroup](https://sdk.apryse.com/api/web/UI.html#.setToolbarGroup__anchor).
* Added a new WebViewer option called `autoFocusNoteOnAnnotationSelection` to turn on and off auto selection of reply/comments on annotation selection
* Added styling popup for Redaction annotations' text overlays
* General improvements to the page replace modal
* Added WebViewer option called `additionalTranslations` and API called [setTranslations](https://sdk.apryse.com/api/web/UI.html#.setTranslations__anchor) to add and update translation entries
* Added API to control if notes can be added by clicking only `Enter` instead of `CTRL/CMD+Enter` ([enableNoteSubmissionWithEnter](https://sdk.apryse.com/api/web/UI.html#.enableNoteSubmissionWithEnter__anchor) and [disableNoteSubmissionWithEnter](https://sdk.apryse.com/api/web/UI.html#.disableNoteSubmissionWithEnter__anchor))
* General improvements to Signature and Custom Stamp modals
* Similar colors are now groupedin the notes filter
* Added property to enable tools without presets when registering a new tool ([registerTool](https://sdk.apryse.com/api/web/UI.html#.registerTool))

### Fixes

* Fixed issue where the tool group and the ribbon would be out of sync in some cases
* Fixed issue where the page navigation does not change if thumbnails panel is extended
* Fixed issue where the signature list was not scrollable
* Fixed issue with the tooltips of page navigation controls where they would be still visible even though the controls would fade out
* Fixed issue where image signatures would be clipped on the edges in some cases
* Fixed issue with using the rich text styling menu on Freetext annotations
* Fixed some Dutch, French, Japanese and Korean translations
* Fixed issue where the delete buttons for default signatures were displayed even after being disabled
* Fixed issue where UI toolbar state would show two selected tools when the core API for changing the tools was invoked
* Fixed issue where the notes would break if a URL with character encoding was inserted in its content
* Fixed issue related to outlines not getting updated when pages are moved
* Fixed issue where calling [searchText](https://sdk.apryse.com/api/web/UI.html#.searchText) was not jumping to the next results
* Fixed issue where the page would crash if another document was loaded while multi-selection thumbnail is enabled
* Fixed issue with the comment button action for a FreeText annotation where it would not open the notes panel
* Fixed issue where, after disabling the page deletion confirmation modal, pages could not be removed at all
* Fixed issue where the rich text controls were not working for Freetext annotations
* Fixed issue where the name of the signer was retrieved from the wrong certificate field
* Fixed issue where the bookmarks panel would not be refreshed if a new document was loaded
* Fixed issue where the style popup was not collapsing correctly on iPads
* Fixed issue where the Freetext annotation style popup slider was off screen on mobile devices
* Fixed issue where the dropdown menu icon in the toolbar becomes unclickable when the frame height is small
* Fixed issue with the style popup sliders not being displayed in some cases
* Fixed issue where the notes filtering modal was not scrollable on certain zoom levels
* Fixed issue where files could not be dragged and dropped into the thumbnail panel
* Fixed issue where the page navigation controls would not be displayed when the display mode is page by page
* Fixed issue where the page manipulation overlay in the thumbnails panel would not hide after some action button is clicked
* Removed opacity slider for widgets as it's not supported at this point
* Fixed styling for form field pop up "Add Option" button on mobile devices
* General style fixes for Internet Explorer


---

# 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-3/v8-3-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.
