Import and Export Annotations from Instant JSON in Java
Annotations can be imported and exported with the PSPDFKit Instant JSON format.
Instant JSON is a serializable representation of the current changes to a document, i.e. a diff between the document’s saved and unsaved changes. This can be used to transfer a set of changes across devices without having to send the entire PDF, which could potentially be large.
In PSPDFKit for Java, we use the terms Instant JSON and Document JSON interchangeably.
Refer to the Instant JSON guide for details on how the format works.
Exporting to Instant JSON
To generate Instant Document JSON, use PdfDocument.exportDocumentJson
, which will take a WritableDataProvider
to write the JSON to.
Exporting to a File
This is an example using a FileDataProvider
:
File file = new File("instant.json"); document.exportDocumentJson(new FileDataProvider(filename));
Exporting to an In-Memory Data Provider
By extending WritableDataProvider
to hold an array of data bytes (see the save to a custom data provider guide for details on implementing this), you can export the document Instant JSON to in-memory data:
CustomDataProvider customDataProvider = new CustomDataProvider(); document.exportDocumentJson(customDataProvider); byte[] data = customDataProvider.read(customDataProvider.getSize(), 0); // ... Do something with `data`.
Other reasons for implementing a custom WritableDataProvider
could be for encrypting the exported JSON, for writing into a database, or for streaming the export to a remote server.
Importing from Instant JSON
The generated JSON in the previous example can be applied to a document using the PdfDocument.importDocumentJson
method, which takes a DataProvider
. This is an example using a FileDataProvider
:
File file = new File("Assets/instant.json"); document.importDocumentJson(new FileDataProvider(file));
If the imported data is malformed or has no data, an exception will be thrown.
The DataProvider
can be inherited from in order to implement custom readers — for example, for decrypting the imported JSON, for reading from a database, or for streaming from a remote server.
Modifying and Generating Instant JSON
You can use the Instant JSON format to generate or alter the JSON prior to importing it with the PdfDocument.importDocumentJson
method described above.