The document content is represented as vector graphics, using objects as lines, curves, text and images. The textual content is stored as Unicode. Colors in vector graphics can be defined in different formats (grayscale, RGB, CMYK, spot colors). Field objects define editable areas in document with additional rules for evaluating user input on client side.
The document is divided into fragments. Simple document would define one fragment for each page making it similar to printed sheet of paper. It is however possible to define more complex layout of document template. The template document contains multiple fragments – building blocks out of which composite documents can be built.
The variable data and the form template are merged by the layout process that runs in the client-side web application. The web application will receive template and variable data from backend and present these to user as a document instance. By loading in new set of data and re-applying layout, new instance is created on the fly.
The validation rules can be applied to user-entered data on the client side. The client-side validation does not replace the final integrity check done in back-end, but it helps users to get the input correct and reduces need for server roundtrips. Client side scripting can be used to extend the form data validation.