Define annotation behavior with flags on Android

Every Annotation in a document can specify AnnotationFlags that further define the annotation’s behavior and capabilities. With Nutrient, you can access these flags directly on your annotation objects using getFlags() and setFlags().

Capabilities of flags

Annotation flags are part of the PDF specification and define the annotation’s behavior, its presentation on the screen and on paper, and the available editing features given to your users. Here are a few examples of things you can do with flags:

  • An annotation that is marked HIDDEN won’t be displayed or printed.

  • By specifying PRINT as well, the annotation will be added to the print output while remaining hidden onscreen.

  • If you want to prevent your users from editing an annotation, you can set the LOCKED and LOCKEDCONTENTS flags.

Information

Check out the AnnotationFlags API reference for a complete list of available flags.

Usage example

Here’s an example of how to create a locked annotation, i.e. an annotation that can’t be edited by your users:

// Create a new annotation.
val annotation: Annotation = ...

// Lock the annotation using flags.
annotation.flags = EnumSet.of(
    AnnotationFlags.LOCKED,
    AnnotationFlags.LOCKEDCONTENTS
)

// Add the newly created annotation to the document.
document.annotationProvider.addAnnotationToPage(annotation)
// Create a new annotation.
final Annotation annotation = ...

// Lock the annotation using flags.
annotation.setFlags(EnumSet.of(
    AnnotationFlags.LOCKED,
    AnnotationFlags.LOCKEDCONTENTS)
);

// Add the newly created annotation to the document.
document.getAnnotationProvider().addAnnotationToPage(annotation);