Annotation Data Formats: XFDF vs. Instant JSON
In addition to reading and writing annotations embedded into a PDF, PSPDFKit also allows you to use external files to manage annotations.
PSPDFKit supports reading and writing annotations in the following external data file formats:
-
XFDF (XML Forms Data Format)
-
Instant JSON
For most use cases, we recommend Instant JSON because it can store deleted annotations and has built-in support for comparing (diffing) changes to annotations. This makes it ideal for synchronizing annotations to a server, or across users, devices, or sessions.
XFDF is best suited for importing data into the system or exporting it for integration with third-party PDF applications.
Comparing Data Formats
XFDF | Instant JSON | |
---|---|---|
Compatible with third-party PDF applications | ✓ | |
ISO-standard format | ✓ | |
Built-in support for comparing changes | ✓ | |
Can store deleted annotations | ✓ | |
Syntax | Verbose | Minimal |
File size | Larger | Compact |
Fully documented | ✓ | ✓ |
XFDF (XML Forms Data Format)
PSPDFKit has full support for reading and writing XFDF.
XFDF is an XML-based standard from Adobe XFDF (ISO 19444-1:2016) for encoding annotations and form field values. It’s compatible with Adobe Acrobat and many other third-party PDF applications.
XFDF is a representation of all annotation and form data inside a PDF document at a point in time. It doesn’t have a concept of differentials (diffs) for managing changes made by multiple users annotating the same PDF simultaneously, and it cannot store deleted annotations. This makes XFDF a challenging format to use for comparing changes, managing conflicts, and synchronizing annotations across users, devices, or sessions.
Instant JSON
Instant JSON is a format we created for bringing annotations and bookmarks into a modern format while keeping all important properties to make the Instant JSON spec work with PDF. It’s not directly supported by other frameworks.
Instant JSON is fully documented and supports persistent storage. It’s designed for synchronizing annotations to a server, and across users, devices, or sessions.