> 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-4/v4-1-0.md).

# Version 4.1.0 Changelog (2018-12-21)

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

## New

* [setNoteDateFormat](https://sdk.apryse.com/api/web/WebViewerInstance.html#setNoteDateFormat__anchor)
* [setPageLabels](https://sdk.apryse.com/api/web/WebViewerInstance.html#setNoteDateFormat__anchor)
* [setSortStrategy](https://sdk.apryse.com/api/web/WebViewerInstance.html#setSortStrategy__anchor)
* [addSortStrategy](https://sdk.apryse.com/api/web/WebViewerInstance.html#addSortStrategy__anchor)
* [useEmbeddedPrint](https://sdk.apryse.com/api/web/WebViewerInstance.html#useEmbeddedPrint__anchor)
* [disableAnnotations](https://sdk.apryse.com/api/web/WebViewerInstance.html#disableAnnotations__anchor)
* [disableDownload](https://sdk.apryse.com/api/web/WebViewerInstance.html#disableDownload__anchor)
* [disableFilePicker](https://sdk.apryse.com/api/web/WebViewerInstance.html#disableFilePicker__anchor)
* [disableNotesPanel](https://sdk.apryse.com/api/web/WebViewerInstance.html#disableNotesPanel__anchor)
* [disablePrint](https://sdk.apryse.com/api/web/WebViewerInstance.html#disablePrint__anchor)
* [disableTextSelection](https://sdk.apryse.com/api/web/WebViewerInstance.html#disableTextSelection__anchor)

## Updates

* If an inline svg is used in a custom button, it would adapt the UI’s color
* Hot-reloading has been enabled for webviewer-ui, improving dev experience when customizing the source code of webviewer-ui
* Excluded react-hot-loader from built files
* Updated color-separation sample to add color percentage
* Capped the canvas multiplier value derived from devicePixelRatio at 2
* Added proper support for surrogate characters to indices handling in XOD
* Greatly reduced wait period between loading of annotations from the original document in PDFNetJS
* Updated logic for appearance streams to avoid errors from resources being deleted prematurely
* Use the filename option when downloading from WebViewer Server
* Use the filename option in legacy ui when downloading from WebViewer Server
* Ensure that we load annotations for page 1 first before other pages
* Added workarounds to handle low canvas memory limit in iOS12
* Improved error handling and messages for common errors
* Added support to handle document path + extension passed as query parameter in loadDocument function
* Fires [visibilityChanged event](https://groups.google.com/d/msg/pdfnet-webviewer/wt20LMXOSpU/AviWFEu0CwAJ/) when the visibility of an element changes
* Prefixes are preserved when autolinking URLs
* UI improvements

## Fixes

* Fixed issue with search result number incrementing/decrementing even if there’s no match
* Fixed issue with previous button in search was searching for the next result instead of previous result
* Fixed issue with border colors missing in IE11
* Fixed issue with tooltips for zoom in and out reversed in the top panel
* Fixed issue with thumbnails not rendering for PDFNetJS
* Fixed issue with font loading on iOS 9
* Fixed issue with using the full API in the legacy viewer
* Fixed wrong document paths in legacy sample
* Fixed several issues with the Angular sample
* Fixed issue where annotations would not load sometimes
* Fixed issue with npm run build script not working in default ui
* Fixed issue where you can't load a local document without specifying filename
* Fixed issue where passing null to initialDoc constructor option would throw an error
* Fixed issue with calling drawAnnotations on pages out of view on mobile
* Fixed issue where annotations sometimes might not be rendered in the legacy mobile viewer
* Fixed issue where setting withCredentials in loadDocument was not working
* Fixed issue where event triggered in viewerElement did not contain any values
* Fixed issue where pageChanged event handler was logging underfined in Angular sample
* Fixed issue with cookie support in PNaCl downloader
* Fixed issue where pending drawAnnotations calls with majorRedraw true will not be called with majorRedraw true
* Fixed issue where documents with an odd number of pages would throw an error in mobile
* Fixed issue where Link annotation with Printable flag false would hang when printing
* Fixed issue with incorrect values being updated for X,Y,Width,Height
* Fixed issue where withCredentials was set to true all the time, even for cross domain requests
* Fixed issue where opening a non-image file to stamp tool made the tool stuck in a bad state
* Fixed issue where did was not applied in GET/POST requests for annotations
* Fixed issue where freehand might not be in download PDF
* Fixed issue where strikeout with StrokeThickness 0 isn't visible
* Fixed issue where first render was getting silently swallowed when we switch to XOD, preventing drawComplete callback from firing in WebViewer Server
* Fixed issue where a cloud annotation without intensity defined won't get stuck in an infinite loop drawing
* Fixed issue getting the page matrix during parsing of pdf-info custom annotations from XFDF
* Fixed issue where callout annotation was remaining in canvas while the annotation wasn't added
* Fixed issue with importing polygons with intensity 0
* Fixed issue where sample pages are not responsive in small screens
* Fixed issue where setToolModeAndGroup function was working in readonly
* Fixed issue where annotation popup was not opening after certain features were disabled and re-enabled
* Fixed issue where annotations without author or contents have been missing from the notes panel
* Fixed issue where shortcuts for creating text annotations tools were working even when the tools are disabled
* Fixed issue where text annotations buttons in text popup were visible even when the tools are disabled
* Fixed issue where document id was not being updated when loading new documents
* Fixed issue where document id was not applied in saving/loading annotations
* Fixed where unshifting or pushing multiple items in setHeaderItems did not work
* Fixed few hard coded strings in note to be translated
* Fixed issue where single search was stuck on last match
* Fixed issue where reply textarea in note was not shrinking when deleting lines
* Fixed issue where the annotationsLoadedPromise never resolves


---

# 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-4/v4-1-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.
