A PDF document is essentially a serialized version of a graph that defines the structure of the document.
This library should define a collection of classes and generic functions allowing the representation of the various components of a PDF document as a graph of objects.
The functions should allow the user to create a graph from a PDF file, to manipulate that graph in various ways, and to save a graph as a PDF file. In particular, they should allow the user to add annotations and interact with forms, as specified in recent versions of the PDF specification.