> 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-8/v8-1-1.md).

# Version 8.1.1 Changelog (February 17, 2021)

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

Version: 8.1.1.76966

Release Date: February 17, 2021

## Notes

This release of Apryse's SDK for UWP adds [Microsoft WinUI 2 library](https://docs.microsoft.com/en-us/windows/apps/winui/winui2/) as a dependency of the UWP Tools SDK.

## Breaking Changes

* \[tools] \[resources] All converters moved to `pdftron.PDF.Tools.Converters` namespace
* \[tools] \[resources] All command events moved to `pdftron.PDF.Tools.Commands.Events` namespace
* \[tools] \[dependency] Removed `pdftron.UWP.Common.dll` as a dependency

## Changed Behavior

* \[tools] \[control] `AnnotationCommandBar` default height changed from 48px to 40px

## New Features

### Measurement tools: Ruler, Area and Perimeter

Note: when editing area or perimeter a feedback value is displayed while dragging a vertice

![](https://3246663708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frgmys2szYV2Z567Zu3vi%2Fuploads%2Fgit-blob-08e418fc053b336061759bc5468df62370b7ac82%2F818fa44b4db59f0e6a9713270b9907a005ea6b45-623x670.gif?alt=media)

* When editing ruler annotation is possible to calibrate it in order to change it's value and measurement unit

![](https://3246663708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frgmys2szYV2Z567Zu3vi%2Fuploads%2Fgit-blob-455fa797cf31d4b50d5ef266d10e4c24f1cfc1f3%2Fe73b4b755bbfbe980b9186c0f0ebaa5803531100-623x670.gif?alt=media)

### Area and Text Redaction

Note: Area Redaction allows to add an overlay text on the redacted region

![](https://3246663708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Frgmys2szYV2Z567Zu3vi%2Fuploads%2Fgit-blob-2887d0a34f090343247da26f33dfca4df7d53075%2F6588ef34a4d70e70ee2c164e8f0c5cde2d21e5b8-623x669.gif?alt=media)

### New Viewer Control

Note: for more information on how to implement the Viewer Control please follow the guide here...

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

## Improvements

* \[pdf] Added PDFDoc generator which allow to create Blank, Grid, Lined, Graph, Music, Dotted, and Isometric paper type
* \[pdf] Added capability of applying OCR XML and JSON data to PDF
* \[tools] Added RulerCreate / Ruler Annotation and Calibration feature
* \[tools] Added AreaCreate / Area Annotation
* \[tools] Added PerimeterCreate / Perimeter Annotation
* \[tools] Added vertices editing for Advanced Shapes: Polygon, Polyline, Cloud, Area and Perimeter annotations.
* \[tools] Added Area Redaction
* \[tools] Added Text Redaction
* \[tools] Marquee Zoom: Added missing property to Enable or Disable it on AnnotationToolbar
* \[tools] \[control] Added CropPopupControl
* \[tools] \[control] Added CustomColorPopupControl
* \[tools] \[control] Added OptimizePopupControl
* \[tools] \[control] Added PasswordPopupControl
* \[tools] \[control] Added QuickSettingsControl
* \[tools] \[control] Added ViewerControl
* \[tools] \[control] Thumbnail Viewer: added duplicate page command to the overlay page commands
* \[tools] \[control] Annotation Toolbar: Added Save option after adding an advanced shape considering the min points for polygon (3 pts) and polyline (2 pts)
* \[tools] \[control] Added FindTextDialog
* \[tools] \[control] Added OutlineDialog
* \[tools] \[control] Added PDFViewCtrlTabButtonControl
* \[tools] \[control] Added PDFViewCtrlTabControl
* \[tools] \[control] Added SaveAsNotification
* \[tools] \[control] Updated UI design of AnnotationPropertyDialog
* \[tools] \[utility] Added WindowsInfo as a helper class when using adaptive code
* \[tools] \[utility] Added MeasureUtils as a helper class when working with measurements tools
* \[tools] \[resources] Added glyph-icon.ttf with new icons design
* \[tools] \[dependency] Added Microsoft.UI.Xaml v2.5.0 (WinUI 2.5)

## Bug Fixes

* \[tools] Fixed crash when using FreeHand annotation with mouse and pen/stylus
* \[tools] Fixed Marquee Tool not returning to Pan if setting is enabled
* \[tools] Added Adaptive Code for old Windows SDK versions (FreeText and AnnotEdit)
* \[tools] Fixed Polygon not adding filling color on creation
* \[tools] Fixed Signature dialog hang if no signature was inserted
* \[tools] Fixed annotation tool not properly switching between main and secondary menu on the annotation toolbar when resizing app
* \[tools] Removed SelectionFlyout popup from RichText when editing FreeText annotation for not being supported
* \[tools] Fixed crash when using AdvancedShapeCreate and a tentative of creation happens when no points have been selected
* \[tools] Fixed missing fill color when creating Polygon, Cloud and Area annot
* \[tools] \[control] Fixed ThumbnailItem missing IsConvert property binding issue
* \[tools] \[control] Fixed ThumbnailItem missing IsConvert property binding issue

## New APIs - PDF SDK

*New* class: `PDFDocGenerator`

* *New* method: `static PDFDoc GenerateBlankPaperDoc(double, double, double, double, double)`
* *New* method: `static PDFDoc GenerateGridPaperDoc(double, double, double, double, double red, double, double, double, double, double)`
* *New* method: `static PDFDoc GenerateLinedPaperDoc(double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double)`
* *New* method: `static PDFDoc GenerateGraphPaperDoc(double, double, double, double, double, int, double, double, double, double, double, double)`
* *New* method: `static PDFDoc GenerateMusicPaperDoc(double, double, double, int, double, double, double, double, double, double, double, double)`
* *New* method: `static PDFDoc GenerateDottedPaperDoc(double, double, double, double, double, double, double, double, double, double)`
* *New* method: `static PDFDoc GenerateIsometricDottedPaperDoc(double, double, double, double, double, double, double, double, double, double)`

*New* class: `OCRModule`

* `void OCRModule.ApplyOCRJsonToPDF(PDFDoc, string)`
* `void OCRModule.ApplyOCRXmlToPDF(PDFDoc, string)`

## New APIs - Tools Package SDK

*New* class: `RectRedactionCreate`

*New* class: `TextRedactionCreate`

*New* interface: `IMeasure`

*New* enum: `PageUnit`

*New* enum: `MeasureInfoType`

*New* class: `MeasureInfo`

*New* class: `MeasureInfoGroup`

*New* class: `MeasureUtils`

* *New* method: `static void SetMeasurementInfo(IAnnot, IMeasure)`
* *New* method: `static void LoadMeasureInfoToObj(Obj, IMeasure)`
* *New* method: `static MeasureInfoGroup GetAnnotMeasureInfo(IAnnot)`
* *New* method: `static MeasureInfo GetMeasureIngo(Obj)`
* *New* method: `static bool IsRulerMeasure(IAnnot)`
* *New* method: `static bool IsAreaMeasure(IAnnot)`
* *New* method: `static bool IsPerimeterMeasure(IAnnot)`
* *New* method: `static string GetIT(IAnnot)`
* *New* method: `static string ConvertToFinalVal(double, string, string, string, string, string)`
* *New* method: `static double ConvScaleToPDFFactor(PageUnit, ToolType, string, string)`
* *New* method: `static double ConvStrToPDFPrecision(string)`
* *New* method: `static string ConvPDFPrecisionToStr(double)`
* *New* method: `static PageUnit GetPageUnitFromString(string)`
* *New* method: `static string FormatDecimals(double, string)`
* *New* method: `static double CalcPerimeter(List<Point>)`
* *New* method: `static double CalcArea(List<Point>)`
* *New* method: `static void UpdateAreaAnnot(Annots.Polygon)`
* *New* method: `static void UpdatePerimeterAnnot(Annots.PolyLine)`

*New* class: `RulerCreate`

*New* class: `AreaMeasureCreate`

*New* class: `PerimeterMeasureCreate`

*New* class: `AnnotEditAdvancedShape`

*New* class: `WindowsInfo`

* *New* method: `static WindowsInfo RetrieveApiInfo()`

*New* enum: `Build`

*New* class: `BooleanToBackgroundColorConverter`

*New* class: `BooleanToBrushConverter`

*New* class: `BooleanToMarginConverter`

*New* class: `BooleanToMaxLengthConverter`

*New* class: `BooleanToMaxWidthConverter`

*New* class: `BooleanToOpacityConverter`

*New* class: `BooleanToOpacityParamConverter`

*New* class: `BooleanToThicknessConverter`

*New* class: `DoubleToPointLabelConverter`

*New* class: `DoubleToThicknessConverter`

*New* class: `EmptyOrNullToVisibilityConverter`

*New* class: `EnumToBooleanConverter`

*New* class: `EnumToOpacityConverter`

*New* class: `IconToCustomUnicodeConverter`

*New* class: `IntEnumToBooleanConverter`

*New* class: `IntEnumToVisibilityConverter`

*New* class: `InverseBooleanToIntParameterConverter`

*New* class: `NotNullToBooleanConverter`

*New* class: `NotNullToVisibilityConverter`

*New* class: `RatioToPercentageConverter`

*New* class: `RatioToPercentageLabelConverter`

*New* class: `ReverseBooleanToBackgroundOpacityConverter`

*New* class: `ReverseBooleanToThicknessConverter`

*New* class: `ReverseSelectedToOpacityConverter`

*New* class: `SelectedIconToCustomUnicodeConverter`

*New* class: `SelectedToOpacityConverter`

*New* class: `StringToResourceConverter`

*New* class: `ThicknessToHalfPointConverter`

*New* class: `ToolTypeToBooleanConverter`

*New* class: `GreaterThanToOpacityConverter`

*New* class: `NumberToColumnNameConverter`

*New* class: `static DependencyObjectExtensions`

*New* class: `AsyncCommand`

*New* class: `AsyncCommandBase`

*New* interface: `IAsyncCommand`

*New* class: `NotifyTaskCompletion<TResult>`

*New* class: `RelayCommand<T>`

*New* class: `CheckedCommand`

*New* class: `CloseRequestedCommand`

*New* class: `FlyoutClosedCommand`

*New* class: `FlyoutOpenedCommand`

*New* class: `ItemClickCommand`

*New* class: `KeyDownCommand`

*New* class: `KeyUpCommand`

*New* class: `LoadedCommand`

*New* class: `LostFocusCommand`

*New* class: `PasswordChangedCommand`

*New* class: `PointerContactCommand`

*New* class: `PointerPressedCommand`

*New* class: `RightTappedCommand`

*New* class: `SelectionChangedCommand`

*New* class: `SizeChangedCommand`

*New* class: `TappedCommand`

*New* class: `TextChangedCommand`


---

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