Configuring annotation presets in UWP

Annotation presets are sets of default properties assigned to each annotation button. With annotation presets, you can configure default values for annotation properties created with the annotation button — for example, default colors.

Annotation presets can be modified to use customized property values. These values will be updated by default when the user changes the settings in the annotation toolbar. It’s possible to disable update events if required.

Below, the line item preset is modified so that line annotations have a red color, are transparent, and have a thick stroke width by default:

// Get the `Dictionary` of `string` -> `IAnnotation` presets.
var presets = await pdfView.Controller.GetAnnotationPresetsAsync();

// We know "line" is a `Line` class.
var line = (Line)presets["line"];

// Change some defaults.
line.StrokeWidth = 10;
line.Opacity = 0.5f;
line.StrokeColor = Colors.Red;

// Set the preset.
await pdfView.Controller.SetAnnotationPresetAsync("line", line);

Preset name to annotation type table

Name Annotation type
strikeout PSPDFKit.Pdf.Annotation.Strikeout
arrow PSPDFKit.Pdf.Annotation.Line
underline PSPDFKit.Pdf.Annotation.Underline
note PSPDFKit.Pdf.Annotation.Note
text-highlighter PSPDFKit.Pdf.Annotation.Highlight
ink-signature PSPDFKit.Pdf.Annotation.Ink
image PSPDFKit.Pdf.Annotation.Image
polygon PSPDFKit.Pdf.Annotation.Polygon
highlight PSPDFKit.Pdf.Annotation.Highlight
rectangle PSPDFKit.Pdf.Annotation.Rectangle
text PSPDFKit.Pdf.Annotation.Text
highlighter PSPDFKit.Pdf.Annotation.Ink
ellipse PSPDFKit.Pdf.Annotation.Ellipse
ink PSPDFKit.Pdf.Annotation.Ink
polyline PSPDFKit.Pdf.Annotation.Polyline
squiggle PSPDFKit.Pdf.Annotation.Squiggly
line PSPDFKit.Pdf.Annotation.Line
redaction PSPDFKit.Pdf.Annotation.Redaction

Preset update events

The following code is taken from the example Catalog app provided with our SDK. It demonstrates how to register an event handler for preset changes made by the user in the annotation toolbar:

pdfView.Controller.OnAnnotationPresetUpdate += async (sender, annotation) =>
{
    var from = await Json.StringifyAsync(annotation.Current);
    var to = await Json.StringifyAsync(annotation.New);
    Events.Add($"Preset updated for {annotation.Name} from:\n {from}\nTo:\n{to}");
};

Preset update events can be disabled. When disabled, any changes to the settings made by the user via the annotation toolbar won’t be preserved after the user is finished creating an annotation:

// Disable preset updating.
await pdfView.Controller.DisableAnnotationPresetUpdatingAsync(true);