> 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-0-2-77903.md).

# Version 9.0.2.77903 Changelog (August 11th, 2021)

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

Version: 9.0.2.77903

Release Date: August 11th, 2021

## Breaking Changes

* \[tools] ViewerControl class: property name change

|       | Declaration                               |
| ----- | ----------------------------------------- |
| From: | ViewerControl.ShowAnnotationToolbarButton |
| To:   | ViewerControl.ShowEditOption              |

* \[tools] ViewerViewModel class: property name change

|       | Declaration                               |
| ----- | ----------------------------------------- |
| From: | ViewerViewModel.IsTextSearchVisible       |
| To:   | ViewerViewModel.IsTextSearchButtonVisible |

## New Features

### ViewerControl Tabs reordering

Document tabs can now be re-ordered by simply dragging and dropping them

![](https://3246663708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frgmys2szYV2Z567Zu3vi%2Fuploads%2Fgit-blob-778d876bfc92f2de63bdccedee18d66fc016fa23%2F4d0b2885ad2dc87818b2e1e69b798eff798c80e2-933x751.gif?alt=media)

### Multi Window Support (open Extra window)

Ability to open multiple app's windows with a custom control, in the example below to view and annotate a PDF

![](https://3246663708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frgmys2szYV2Z567Zu3vi%2Fuploads%2Fgit-blob-1ffa19e9e83a434893b6bc6412adf4eb51f23697%2F455ce2fbf3d953135e87b4f9ac9d94b6b8f5cb58-1557x737.gif?alt=media)

The creation of new Windows can be done by using the MultiWindowManager

{% tabs %}
{% tab title="C#" %}
{% code lineNumbers="true" %}

```csharp
var result = await MultiWindowManager.Instance.TryCreateNewWindowAsync(typeof(ViewPdfControl));
if (result.IsWindowCreated)
{
    mExtraWindowId = result.AppViewId;
}
```

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

When the main app is close it should handle the closing of any extra window created by calling await MultiWindowManager.Instance.CloseAllChildWindowsAsync()

{% tabs %}
{% tab title="C#" %}
{% code lineNumbers="true" %}

```csharp
SystemNavigationManagerPreview.GetForCurrentView().CloseRequested += App_CloseRequested;

private async void App_CloseRequested(object sender, SystemNavigationCloseRequestedPreviewEventArgs e)
{
    var deferral = e.GetDeferral();

    // Ensure all extra created windows are properly closed on App's exit
    await MultiWindowManager.Instance.CloseAllChildWindowsAsync();

    deferral.Complete();
}
```

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

### PDF Compare with Page Sync Scrolling support

Now it is possible to sync page while scrolling which is usefull when manually comparing documents with different zoom levels

![](https://3246663708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frgmys2szYV2Z567Zu3vi%2Fuploads%2Fgit-blob-69eee78af45d794a0b38d574ec03ef9451839a1a%2F212c54c0e5cab2e562e417f7905f0594b7f446d7-1066x855.gif?alt=media)

### Context Menu on Mouse Right-click

Clicking on the PDF with the right click of the mouse will now bring the context menu for quick annotation

![](https://3246663708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frgmys2szYV2Z567Zu3vi%2Fuploads%2Fgit-blob-492acc7f9c3f35bae97b0378307355f6726ba210%2Fce0471a0342ec37fcfee3e5fa3127809334b2fdb-977x759.gif?alt=media)

## Improvements

* \[pdf] Added PDF to EPUB conversion support
* \[tools] \[control] ViewerControl: expanded UI customization: show/hide Outline menu option’s flyout menu options
* \[tools] \[control] ViewerControl: after copying and pasting an annotation, it will be automatically selected for editing
* \[tools] \[control] Added proper tooltip text to buttons found in the Context Menu
* \[tools] \[control] TextSearch: while text search results are being displayed, users can now use keyboard left to visit previous search result, and keyboard right to visit next search result
* \[tools]\[control] Updated all Message Dialogs to use `ContentDialog` instead of `MessageDialog` with better UX
* \[tools] Show Context Menu (quick options) when right-clicking on the PDF
* \[tools] Added ability to show/hide the Default Signature (saved signature) when disaplying signature dialog
* \[tools] Added ability to select annotation programmatically
* \[tools] Added ability to set a ReadOnlyMode that restricts editing of opened PDFs
* \[tools] Added Japanese language support

## Bug Fixes

* \[tools] Fixed exception caused by the Multiselection tools trying to select a Widget/Form annotation
* \[tools] Copy and Paste Annotation: Fixed issue with shared address which would cause an annotation that was pasted to edit the original annotation style
* \[tools] \[control] ViewerControl - Fixed exception caused when navigating back from a page that hosts the ViewerControl
* \[tools] \[control] ViewerControl - Text Search Dialog is no longer accessible via shortcut (Ctrl + F) when ShowTextSearchOption is disabled/false
* \[tools] \[control] ViewerControl - Highlighted text results will no longer remain highlighted when exiting Text Search mode
* \[tools] \[control] ViewerControl - Fixed highlighted words after closing the search results

## New APIs - PDF SDK

*New* Methods

* `void Convert.ToEpub(PDFDoc, String)`
* `IAsyncAction Convert.ToEpubAsync(PDFDoc, String)`

## New APIs - Tools Package SDK

*New* Properties

* `bool ToolManager.ShowDefaultSignature`
* `bool SignatureDialog.ShowDefaultSignatures`
* `bool ViewerControl.ShowMultiWindowOption`
* `bool ViewerControl.ShowOutlineOption`
* `bool ViewerControl.ShowViewModeOption`
* `bool ViewerControl.ShowSeeMoreOption`
* `bool ViewerControl.ShowSidePanelThumbnails`
* `bool ViewerControl.ShowSidePanelBookmarks`
* `bool ViewerControl.ShowSidePanelOutline`
* `bool ViewerControl.ShowSidePanelAnnotations`
* `bool ViewerControl.ShowAddTabButton`
* `bool ViewerControl.ShowCloseTabButton`
* `bool ViewerControl.ReadOnlyMode`
* `bool ViewerControl.ShowBackButton`
* `bool ViewerControl.IsDeactivationOnNavigationEnabled`
* `bool ViewerControl.IsForceGoBackAllowed`
* `bool ViewerControl.IsTabReorderEnabled`
* `bool ViewerViewModel.IsMultiWindowEnabled`
* `bool ViewerViewModel.IsMultiWindowVisible`
* `bool ViewerViewModel.IsMultiWindowSubVisible`
* `bool ViewerViewModel.IsMultiWindowActive`
* `bool ViewerViewModel.IsEditButtonEnabled`
* `bool ViewerViewModel.IsOutlineButtonVisible`
* `bool ViewerViewModel.IsOutlineButtonEnabled`
* `bool ViewerViewModel.IsPivotItemThumbnailsEnabled`
* `bool ViewerViewModel.IsPivotItemBookmarksEnabled`
* `bool ViewerViewModel.IsPivotItemOutlineEnabled`
* `bool ViewerViewModel.IsPivotItemAnnotationsEnabled`
* `bool ViewerViewModel.IsTextSearchButtonVisible`
* `bool ViewerViewModel.IsTextSearchButtonEnabled`
* `bool ViewerViewModel.IsViewModeButtonVisible`
* `bool ViewerViewModel.IsViewModeButtonEnabled`
* `bool ViewerViewModel.IsSeeMoreButtonVisible`
* `bool ViewerViewModel.IsSeeMoreButtonEnabled`
* `bool ViewerViewModel.IsAddTabButtonEnabled`
* `bool ViewerViewModel.IsCloseTabButtonEnabled`
* `bool ViewerViewModel.IsReadOnlyModeEnabled`
* `bool ViewerViewModel.KeepOpenedTabs`
* `bool ViewerViewModel.IsDeactivationOnBackNavigationEnabled`
* `bool ViewerViewModel.IsForceGoBackAllowed`
* `bool ViewerViewModel.IsTabReorderEnabled`
* `bool TabControlViewModel.IsAddTabButtonVisible`
* `bool TabControlViewModel.IsAddTabButtonEnabled`
* `bool TabControlViewModel.KeepOpenedTabs`
* `bool TabControlViewModel..IsTabReorderEnabled`
* `bool PdfViewCtrlTabInfo.IsCloseTabButtonVisible`
* `bool PdfViewCtrlTabInfo.IsCloseTabButtonEnabled`
* `bool PdfCompareViewModel.SyncPage`
* `bool OutlineDialogViewModel.IsPivotItemThumbnailsEnabled`
* `bool OutlineDialogViewModel.IsPivotItemBookmarksEnabled`
* `bool OutlineDialogViewModel.IsPivotItemOutlineEnabled`
* `bool OutlineDialogViewModel.IsPivotItemAnnotationsEnabled`
* `CoreApplicationView Tool.CurrentView`

*New* Methods

* `static Brush ResourceHandler.GetColorFromToolPalette(string)`
* `void Pan.CreateCommandMenu(UIPoint)`
* `void AnnotEdit.SelectAnnotation(IAnnot, int)`
* `void ToolManager.SelectAnnotation(IAnnot, int)`
* `async Task ViewerViewModel.MultiWindowImpl(object)`
* `void CheckerGrid.SetFillColorOnThreadSafe(Rectangle, bool)`
* `ContentDialog DocumentCreationViewModelBase.GetErrorContentDialog()`
* `void ViewerControl.HandleCommandBarInteraction(RightTappedRoutedEventArgs)`
* `async void PDFViewCtrlTabButtonControl.TabViewControl_TabDragCompleted(TabView, TabViewTabDragCompletedEventArgs)`
* `void PDFViewCtrlTabButtonControl.PDFViewCtrlTabButtonControl_DataContextChanged(FrameworkElement, DataContextChangedEventArgs)`
* `void PDFViewCtrlTabButtonControl.TabViewControl_TabDragStarting(TabView, TabViewTabDragCompletedEventArgs)`

*New* class: MultiWindowManager

* *New* Properties
  * `int MultiWindowManager.OpenedWindowsCount`
* *New* Methods
  * `void MultiWindowManager.TrackWindow(int)`
  * `async Task<MultiWindowCreationResult> MultiWindowManager.TryCreateNewWindowAsync(System.Type)`
  * `bool MultiWindowManager.UntrackWindowById(int)`
  * `async Task<bool> MultiWindowManager.CloseWindowByIdAsync(int)`
  * `async Task MultiWindowManager.CloseAllChildWindowsAsync()`
  * `async Task MultiWindowManager.SwitchWindowByIdAsync(int)`

*New* class: MultiWindowCreationResult

* *New* Properties
  * `int MultiWindowCreationResult.AppViewId`
  * `bool MultiWindowCreationResult.IsWindowCreated`

*New* interface: IMultiWindowUserControl

*New* Converters

* BrushToColorConverter
* BooleanToCommandBarOverflowButtonVisibilityConverter

*New* UserControl: NewWindowPage

*New* language resources

Japanese

* `string\ja-jp\Printing.resw`
* `string\ja-jp\Resources.resw`

*Removed* Methods

* `FindTextViewModel.FocusTextSearchAsync()`


---

# 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-0-2-77903.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.
