Manage PDF annotations with Instant JSON

Annotations can be imported and exported to a document using Nutrient’s Instant JSON format, which keeps all the important properties of annotations and supports long-term storage. Refer to the Instant JSON documentation for more details about the format.

A single annotation JSON can be generated by calling the ToJson() method of our public API:

var annotation = _annotationManager.AnnotationFactory.CreateAnnotation<Line>();
annotation.StartPoint = new System.Drawing.PointF(10, 10);
annotation.EndPoint = new System.Drawing.PointF(100, 100);
annotation.BoundingBox = new Sdk.Models.Geometry.Rectangle()
{
Left = 0,
Top = 0,
Width = 100,
Height = 100
};
var annotationJson = annotation.ToJson();

The annotation JSON that’s obtained can later be deserialized using the counterpart to CreateAnnotation(), PSPDFKit.Api.Annotation.IAnnotationFactory.CreateAnnotation():

var annotation = _annotationFactory.CreateAnnotation(JObject.Parse(annotationJson));

Importing annotations in Instant JSON

If the Document Editor component is included in the license, ImportInstantJsonAsync can be used to import Instant JSON via IAnnotationManager.ImportInstantJsonAsync():

await _annotationManager.ImportInstantJsonAsync(
JObject.Parse(@"{
bbox: [100, 150, 200, 75],
blendMode: ""normal"",
createdAt: ""1970-01-01T00:00:00Z"",
id: ""01F73GJ4RPENTCMFSCJ5CSFT5G"",
name: ""01F73GJ4RPENTCMFSCJ5CSFT5G"",
opacity: 1,
pageIndex: 0,
strokeColor: ""#2293FB"",
strokeWidth: 5,
type: ""pspdfkit/shape/rectangle"",
updatedAt: ""1970-01-01T00:00:00Z"",
v: 1
}"));

Importing Instant JSON annotations can also be achieved without the Document Editor license component using the IViewerConfiguration.InstantJson:

var config = PSPDFKitController.CreateViewerConfiguration();
config.InstantJson = JObject.Parse(@"{
bbox: [100, 150, 200, 75],
blendMode: ""normal"",
createdAt: ""1970-01-01T00:00:00Z"",
id: ""01F73GJ4RPENTCMFSCJ5CSFT5G"",
name: ""01F73GJ4RPENTCMFSCJ5CSFT5G"",
opacity: 1,
pageIndex: 0,
strokeColor: ""#2293FB"",
strokeWidth: 5,
type: ""pspdfkit/shape/rectangle"",
updatedAt: ""1970-01-01T00:00:00Z"",
v: 1
}");
await PSPDFKitController.LoadDocumentFromAssetsAsync(DemoFile, config);

Exporting annotations in Instant JSON

Annotations that have been saved can be exported in Instant JSON format using the IAnnotationManager.ExportInstantJsonAsync() API method:

const json = await _annotationManager.ExportInstantJsonAsync();