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

# Version 8.0.0 Changelog (September 11, 2020)

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

Version: 8.0.0.76178

Release Date: September 11, 2020

## Notes

This release of Apryse for Universal Windows Platform (UWP) brings the core PDF functionality inline with version 8.0.0 of the Apryse cross-platform APIs. More information can be found on [What's new for cross-platform APIs](/core/changelogs/version-8/8-0-0.md).

## New Features

* Added support to convert ppt and xls office format to PDF
* Added External Annotation Manager that supports real time collaboration of annotations
* Added [`Ink.SetHighlightIntent`](https://sdk.apryse.com/api/uwp/guides/html/ab2612ec-5219-d39d-1a70-5c3ae98f4f22.htm) and [`Ink.GetHighlightIntent()`](https://sdk.apryse.com/api/uwp/guides/html/2586b388-06e9-0ffd-73e2-22b33b1a9cc0.htm) which should be used instead of the deprecated [`Ink.SetBlendMode()`](https://sdk.apryse.com/api/uwp/guides/html/6464c75e-3ae4-ebfe-80aa-caff7f1b8a40.htm)
* Added `SetCustomData()`, `GetCustomData()`, and `DeleteCustomData()` to all annotations so extra info can be used when creating or editing annotation
* Added [`PDFviewCtrl.SetRequiredFieldBorderColor(Color)`](https://sdk.apryse.com/api/uwp/guides/html/7f951c29-d314-eaac-38f9-383bde7ce63c.htm) which allows to change the border color of required field on a document
* Utility functions to refresh all missing appearances and more easily create custom appearances ([`PDFDoc.RefreshAnnotAppearance()`](https://sdk.apryse.com/api/uwp/guides/html/ed2467fb-c21c-dd53-38b0-45513dc862cd.htm) and `Annot.RefreshAnnotAppearance(RefreshOptions)`)
* Added support to dashed border creation using `Annot.AnnotBorderStyle()`

## Improvements and Bugfixes

* \[pdf] Added proper exception handling to GetThumbAsync()
* \[pdf] Added `Annot.SetDateToNow()` to all annotations
* \[pdf] Added new [`Image.Create()`](https://sdk.apryse.com/api/uwp/guides/html/3b5fa594-388d-b3fc-a016-b8ebede839b4.htm) method ro create Image
* \[pdf] Added ability to create Markup from SDF obj or Annotation as a way of casting annotation objects
* \[tools] AnnotationManager - supports annotation syncing between different clients to allow collaboration
* \[tools] FreehandCreate - it now uses new API Ink.SetHighlightIntent() instead of deprecated Ink.SetBlenMode()
* \[tools] Annotation Unique ID - Added unique ID when annotation is created
* \[Resources] Added plugin files to be used when converting Office files to PDF
* \[pdf] fixed SaveAsync() issue after Undo() is performed which previously would thrown an exception and not save the document properly
* \[pdf] fixed SaveAsync() issue after Flattening or Reducing a document which could cause an exception
* \[pdf] fixed Page.GetAnnot() exception when trying to get a not valid SDF object
* \[pdf] fixed issue when creating dashed annotation border using AnnotBorderStyle
* \[tools] UndoRedoManager - correct instability issue and improved feature performance
* \[tools] AnnotationCommandBar - fixed Undo() and Redo() issues where these actions would not be performed in a proper order and therefore not update PDfViewctrl correctly
* \[tools] ThumbnailView - fixed issue of thumbnail view not displaying correct image when Undo() or Redo() is performed
* \[tools] ThumbnailsView - fixed crash that might occur when ThumbnailView is opened and the document tab is closed
* \[tools] MultiSelect tool - fixed crash when resizing an annotation group
* \[tools] MultiSelect tool - fixed control points not being reliable when selecting a group of annotations
* \[tools] ThumbnailView - improved ThumbnailView performance when doc is opened
* \[tools] Eraser - fixed issue when Eraser is used in conjunction with Undo() or Redo()

## New APIs

* `PDFDoc.RefreshAnnotAppearance()`
* `Annot.SetDateToNow()`
* `Annot.SetCustomData(String)`
* `(String) Annot.GetCustomData(String)`
* `Annot.DeleteCustomData(String)`
* `Annot.RefreshAnnotAppearance(RefreshOptions)`
* `AnnotBorderStyle(AnnotBorderStyleStyle, double, double, double, Array<double>)`
* `(bool) RefreshOptions.GetDrawBackgroundOnly()`
* `RefreshOptions.SetDrawBackgroundOnly(bool)`
* `(bool) RefreshOptions.GetRefreshExisting()`
* `RefreshOptions.SetRefreshExisting(bool)`
* `(bool) RefreshOptions.GetUseNonStandardRotation`
* `RefreshOptions.SetUseNonStandardRotation(bool)`
* `(bool) RefreshOptions.GetUseRoundedCorners()`
* `RefreshOptions.SetUseRoundedCorners(bool)`
* `PDFviewCtrl.SetRequiredFieldBorderColor(Color)`
* `Ink.SetHighlightIntent(bool)`
* `(bool) Ink.GetHighlightIntent()`
* `(Image) Image.Create(SDFDoc, FilterReader, int32, int32, int32, ColorSpace, Obj)`
* `ExternalAnnotManager.MergeXFDF(String)`
* `(String) ExternalAnnotManager.Undo()`
* `(String) ExternalAnnotManager.Redo()`
* `(Rect) ExternalAnnotManager.JumpToAnnotWithID(String)`
* `(String) ExternalAnnotManager.GetLastXFDF()`
* `(String) ExternalAnnotManager.GetLastJSON()`
* `(String) ExternalAnnotManager.GetNextRedoInfo()`
* `(String) ExternalAnnotManager.GetNextUndoInfo()`
* `(String) ExternalAnnotManager.TakeSnapshot(String)`


---

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