> 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/uwp/changelogs/version-9/v9-1-1-78644.md).

# Version 9.1.1.78644 Changelog (October 25th, 2021)

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

Version: 9.1.1.78644

Release Date: October 25th, 2021

## Breaking Changes

* \[tools] TabControlViewModel class: event name changed

|       | Declaration                                 |
| ----- | ------------------------------------------- |
| From: | TabControlViewModel.FixedButtonClicked      |
| To:   | TabControlViewModel.BrowseDocumentRequested |

## New Features

### Record and Play Sound Annotation

With the new AudioControl it is possible to record voice, play, pause and stop recording sessions and create sound annotations while continue working on the document

![](https://3246663708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frgmys2szYV2Z567Zu3vi%2Fuploads%2Fgit-blob-4db457a76034082a4459bd07acd5a9ab06c441e9%2Fea2113b243bba6e36663b39bb41eeb50bf0bae47-1016x866.gif?alt=media)

### Create Documents using ViewerControl

Now the ViewerControl supports the creation of new documents by creating a blank PDF with a specific paper type or creating it from an image like a scanned file.

![](https://3246663708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frgmys2szYV2Z567Zu3vi%2Fuploads%2Fgit-blob-65df9c5bc159ec420c537aa7924e48c96c5d0d09%2F6faaf955586cd19982a68c409175e500c5e98eb0-831x673.gif?alt=media)

### Enhanced Context Menu

The context menu has been enahanced adding a second row of tools and an expandable flyout menu which can be used for extra features like Reset Zoom, Paste Annotation, etc.

![](https://3246663708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frgmys2szYV2Z567Zu3vi%2Fuploads%2Fgit-blob-2a95128b5385df4120a4b580fd389f67afdb3575%2F329a42ea362de2f3c1531c8829dae3e788444b6c-841x784.gif?alt=media)

## Improvements

* \[tools] \[control] ViewerControl: Full keyboard shortcut support
* \[tools] \[control] Outline: improved performance and memory usage
* \[tools] Series of updates to replace MessageDialog by ContentDialog for better UX

## Bug Fixes

* \[pdf] Fixed issue that would cause Windows Apps Cert Kit to fail during validation process.
* \[pdf] Fixed potential exception when using Highlights or TextSearch APIs
* \[tools] \[control] ViewerControl: Fixed file type not supported when the file type name is not all lower case
* \[tools] \[control] ViewerControl: Fixed potential null exception when navigating away from the Page that hosts ViewerControl
* \[tools] \[control] ViewerControl: Fixed potential null exception when closing Reflow
* \[tools] \[control] ViewerControl: Fixed potential null exception when command bar right click / tap is issued and control has not been fully initialized
* \[tools] \[control] ViewerControl: Fixed potential exception when changing reflow and outline colors in View Mode
* \[tools] \[control] ViewerControl: Fixed color mode selected (View Mode) not saved on app startup
* \[tools] \[control] ViewerControl: Series of fixes for ReadOnlyMode to ensure no editing is enabled
* \[tools] \[control] ThumbnailsView: Fixed reoder page bug that prevents outlines from going to the moved page.
* \[tools] \[control] ThumbnailsView: Fixed thumbnail single item reorder animation
* \[tools] \[control] ThumbnailsView: Fixed thumbnail multi reorder bug where duplicate pages are shown.
* \[tools] \[control] Outline: Fixed quick adding a new child outline when parent is not yet expanded which would case to other children to not be displayed
* \[tools] Fixed potential null exception for the Text Markup Editing tool
* \[tools] Fixed possible exception when DocumentManager has not been initialized yet and an use attempt is performed
* \[tools] Varies UI fixes
* \[tools] Varies Localization / Language fixes

## New APIs - Tools Package SDK

*New* Methods

* `void ToolManager.DeleteAnnotation(PDFViewCtrl, IAnnot, int)`
* `async Task<StorageFile> DocumentManager.SaveToTemporaryFileAsync(PDFDoc, string, bool)`
* `Outline.Dispose`
* `OutlineViewModel.Dispose()`
* `OutlineDialogViewModel.Dispose()`
* `void ReflowView.SetColorPostProcessingMode(PDFRasterizerColorPostProcessMode, Windows.UI.Color, Windows.UI.Color)`
* `static async Task<StorageFile> DocumentManager.SaveAudioStreamToDiskAsync(IRandomAccessStream)`
* `static async Task DocumentManager.CleanupTempAudioFilesFromDiskAsync()`
* `bool UtilityFunctions.IsAudioCaptureAvailable()`
* `static void UtilityFunctions.ShowToastNotification(string, string, uint)`
* `static async Task<IRandomAccessStream> UtilityFunctions.ConvertToRandomAccessStreamAsync(MemoryStream)`
* `static byte[] UtilityFunctions.SwapByteArray(byte[])`
* `static async Task UtilityFunctions.RunAsyncSaferAsync(CoreWindow, DispatchedHandler)`
* `static async Task UtilityFunctions.RunAsyncSaferAsync(CoreWindow, Func<Task>)`

*New* Properties

* `ViewerViewModel.IsAudioControlVisible`
* `AudioControl SoundControl`
* `BooleanToBackgroundColorConverter.SelectedBrushProperty`
* `BooleanToBackgroundColorConverter.SelectedBrush`
* `BooleanToBackgroundColorConverter.UnSelectedBrushProperty`
* `BooleanToBackgroundColorConverter.UnSelectedBrush`
* `bool ViewerControl.IscurrentDocumentModified`
* `bool FreehandCreate.AllowDrawingDot`

*New* Events

* `ToolManager.OnSoundAnnotRequested`
* `ViewerControl.DocumentModified`
* `ViewerViewMode.DocumentModified`
* `TabControlViewModel.CreateDocumentRequested`

*New* Commands

* `TabControlViewModel.CMDBrowseDocument`
* `TabControlViewModel.CMDCreateDocument`

*New* Enum - pdftron.PDF.Tools.Controls.FloatingBoundary

* `None`
* `Parent`
* `Window`

*New* Enum - pdftron.PDF.Tools.Controls.FloatingStartPosition

* `TopLeft`
* `BottomCenter`

*New* Class - pdftron.PDF.Tools.Controls.FloatingContentControl

* `bool Draggable`
* `FloatingBoundary Boundary`
* `FloatingStartPosition StartPosition`

*New* Control - pdftron.PDF.Tools.Controls.ContextMenuControl

* *New* Constructors
* `ContextMenuControl(pdftron.PDF.PDFViewCtrl)`
* *New* Methods
* `ContextMenuControl(pdftron.PDF.PDFViewCtrl, Dictionary<string, string>)`
* `void Show(UIPoint)`
* `void Hide()`
* `bool IsOpen()`
* `bool ShowOverflow()`
* `double HorizontalOffset()`
* `double VerticalOffset()`
* `int MaxButtonsPerRow()`
* `int OverflowContainerRow()`
* `ObservableCollection<Button> ButtonCollection()`
* `ObservableCollection<MenuFlyoutItem> OverflowCollection()`
* `void CreateOverflowFromDictionary(Dictionary<string, string>)`
* `void AddItemToOverflowCollection(MenuFlyoutItem)`
* `void AddButtonToCollection(Button, bool)`
* `void CreateButtonsFromDictionary(Dictionary<string, string>)`
* `void ClearButtonCollection()`
* `void ClearOverflowCollection()`
* `void InitBaseTools()`
* *New* Events
* `event ContextMenuControlViewModel.ItemClickedDelegate ItemClicked`

*New* Class - ContextMenuControlViewModel

* *New* Constructors
  * `ContextMenuControlViewModel(pdftron.PDF.PDFViewCtrl)`
  * `ContextMenuControlViewModel(pdftron.PDF.PDFViewCtrl, Dictionary<string, string>)`
* *New* Methods
  * `void Show()`
  * `void Show(UIPoint)`
  * `void Hide(bool)`
  * `void CreateOverflowFromDictionary(Dictionary<string, string>)`
  * `void AddItemToOverflowCollection(MenuFlyoutItem)`
  * `void AddButtonToCollection(Button, bool)`
  * `void CreateButtonsFromDictionary(Dictionary<string, string>)`
  * `void ClearButtonCollection()`
  * `void ClearOverflowCollection()`
  * `void InitBaseTools()`
  * `void TargetSquare(double, double, double, double)`
  * `void TargetPoint(UIPoint pt)`
  * `void Dispose()`
* *New* Properties
  * `bool IsOpen`
  * `bool ShowOverflow`
  * `double HorizontalOffset`
  * `double VerticalOffset`
  * `int MaxButtonsPerRow`
  * `int OverflowContainerRow`
  * `ObservableCollection<Button> ButtonCollection`
  * `ObservableCollection<MenuFlyoutItem> OverflowCollection`
* *New* Events
  * `event ItemClickedDelegate ItemClicked`

*New* Class - pdftron.PDF.Tools.Controls.Multimedia.AudioControl

* *New* Constructors
  * `AudioControl(PDFViewCtrl, Windows.Foundation.Point)`
* *New* Properties
  * `AudioControlViewModel ViewModel`
  * `bool IsReady`
* *New* Methods
  * `async Task<bool> InitializeAsync()`
  * `StorageFile RecordedFile()`
  * `void CloseControl()`
  * `void Dispose()`
* *New* Events
  * `event OnCloseRequestedHandler CloseRequested`
  * `event OnRecordingCompletedHandler RecordingCompleted`

*New* Enum - pdftron.PDF.Tools.Controls.ViewModels.Multimedia.AudioPlayerMode

* `RecordAndPlay`
* `PlayOnly`

*New* Class - pdftron.PDF.Tools.Controls.ViewModels.Multimedia.AudioControlViewModel

* *New* Constructors
  * `AudioControlViewModel(PDFViewCtrl, Windows.Foundation.Point, AudioPlayerMode)`
* *New* Properties
  * `bool IsRecButtonVisible`
  * `bool IsRecTimeVisible`
  * `bool IsPlayButtonVisible`
  * `bool IsPauseRecordingButtonVisible`
  * `bool IsPlaybackButtonVisible`
  * `bool CanPlayPreview`
  * `bool IsRecording`
  * `bool IsRecordingInProgress`
  * `string TotalTime`
  * `string ElapsedTime`
  * `double SliderPosition`
  * `bool IsReady`
  * `StorageFile RecordedFile`
* *New* Methods
  * `async Task<bool> InitAsync()`
  * `void Dispose()`
* *New* Commands
  * `ICommand CMDRecordAudio`
  * `ICommand CMDPauseRecording`
  * `ICommand CMDCloseAudio`
  * `ICommand CMDPlayPlayback`
  * `ICommand CMDPausePlayback`
  * `ICommand CMDStopAudio`
* *New* Events
  * `event OnCloseRequestedHandler CloseRequested`
  * `event OnRecordingCompletedHandler RecordingCompleted`

*New* Class - pdftron.PDF.Tools.Controls.Multimedia.AudioGraphPlayer

* *New* Constructors
  * `AudioGraphPlayer()`
* *New* Properties
* *New* Methods
  * `async Task InitAudioGraphAsync()`
  * `async Task LoadFileAsync(StorageFile)`
  * `void Play()`
  * `void Stop()`

*New* Class - pdftron.PDF.Tools.Controls.CreateDocControl

* *New* Constructors
  * `CreateBlankDocControl()`
* *New* Properties
  * `CreateDocControlViewModel ViewModel`
* *New* Methods
  * `void Dispose()`
* *New* Events
  * `event NewDocumentCreated`
  * `event DocumentCreationFailed`

*New* Class - pdftron.PDF.Tools.Controls.CreateImageDocControl

* *New* Constructors
  * `CreateImageDocControl()`
* *New* Properties
  * `CreateDocControlViewModel ViewModel`

*New* Class - pdftron.PDF.Tools.Controls.CreateBlankDocControl

* *New* Constructors
  * `CreateBlankDocControl()`
* *New* Properties
  * `CreateDocControlViewModel ViewModel`

*New* Enum - PaperSizes

* `Letter`
* `Legal`
* `A0`
* `A1`
* `A2`
* `A3`
* `A4`
* `A5`
* `B0`
* `B1`
* `B2`
* `B3`
* `B4`
* `B5`

*New* Class - PaperSizeHolder

* *New* Constructors
  * `PaperSizeHolder(PaperSizes, double, double, string)`
* *New* Properties
  * `PaperSizes PaperSize`
  * `double Width`
  * `double Height`

*New* Enum - CreateDocFrom

* `Blank`
* `Image`

*New* Enum - ImageCreationType

* `File`
* `Camera`
* `None`

*New* Class - CreateDocControlViewModel

* *New* Constructors
  * `CreateDocControlViewModel()` -
* *New* Properties
  * `ObservableCollection<PaperTypeHolder> AvailablePaperTypes`
  * `ObservableCollection<PaperSizeHolder> AvailablePaperSizes`
  * `string DocumentTitle`
  * `CreateDocFrom DocumentType`
  * `bool IsPortrait`
  * `PaperSizeHolder SelectedPaperSize`
  * `PaperTypeHolder SelectedPaperType`
  * `int TotalPages`
  * `string DefaultDocumentName`
  * `BitmapImage PreviewImage`
  * `bool IsImageSelected`
  * `ImageCreationType ImageType`
* *New* Events
  * `event DocumentCreationFailed`
  * `event NewDocumentCreated`
* *New* Commands
  * `RelayCommand CMDPickImageFromFile`
  * `RelayCommand CMDPickImageFromCamera`
  * `RelayCommand CMDCreateDocument`


---

# 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/uwp/changelogs/version-9/v9-1-1-78644.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.
