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();// Annotation Instant JSON.{ "startPoint": [10, 10], "endPoint": [100, 100], "strokeColor": "#2293FB", "strokeWidth": 5, "blendMode": "normal", "bbox": [0, 0, 100, 100], "createdAt": "2024-02-09T10:21:17.1203525+00:00", "opacity": 1, "pageIndex": 0, "updatedAt": "2024-02-09T10:21:17.1203525+00:00", "v": 2, "type": "pspdfkit/shape/line"}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();