########
Overview
########

Advanced Publishing can be used to export the data into a PDF document. This section describes the different types of entities that can be configured on a PDF document.

A PDF document contains pages. A page layout comprises different kind of entities, some are static entities (meaning they are created at document creation and cannot be modified), and some are dynamic (meaning they can be modified at runtime, sometimes interactively by the end user action). Static layout entities are *text line*, *image*, *table*, *link*, and *2D drawings*. Dynamic layout entities (widgets) are fields (text, buttons, lists, ...) or high level widgets, such as *view carousel* or *scroll table*. The *3D annotation* is also a dynamic entity.


Document
--------

    * Defines a PDF document.
    * A new, empty document can be created, or a document can be created using an existing PDF file as a template.
    * A document contains a list of pages; new blank pages and pages from existing PDF files can be appended to existing documents.
    * Author information can be set for the document, and both a user (reader) and owner (administrator) password can be set.
    * External files can be attached to the document and JavaScript can be added that is run when the document is opened.


Page
----

    * A document includes multiple pages.
    * Text, images, 3D annotations and other fields can be added to and laid out on pages.
    * Tables can also be added on pages.
    * Values for fields that have been created via PDF templates can be set via the Page.
    * Visibility for fields can be controlled.
    * Interactivity can be attached to fields within the page.


3D Annotation
-------------

    * A 3D annotation is a container for a particular 3D scene
    * 3D annotations contain streams which define the model data and artwork which define the scene when it has been loaded.
    * Control is available over when a 3D annotation is activated and deactivated e.g. when the file is opened, or when the user clicks on it.
    * Lighting, rendering and animation styles can be set at the annotation level. The animation style refers to how animations are played i.e. automatically or in response to JavaScript.


Stream
------

    * The stream defines the 3D model data which can be in PRC or U3D format.
    * A stream is stored on the Artwork in the 3D Annotation.


Artwork
-------

    * Artwork contains a reference to a stream, and optionally a JavaScript file to control the interaction with the 3D scene.
    * Artwork contains a number of views, which can be created through the Advanced Publishing API or read from the CAD file if present.


View
----

    * A view defines a camera.
    * An Artwork within a 3D Annotation can have multiple views. A view can be specified as the default.
    * As well as camera parameters, a background color, rendering and lighting style can be defined for the view.
    * A view can be defined in the source 3D file or programmatically.


Text Line
---------

    * Text line can be created with a defined font, size and color.
    * Text line is positioned when added to a page.
    * Text line is a static entity, and a similar dynamic entity exists with text field.


Image
-----

    * An image can be created from a wide variety of raster formats.
    * An image is placed when added to a page.
    * Image is a static entity, and a similar dynamic entity exists with button icons.


Link
----

    * A link is a 'hot zone' on which is assigned an action. When the user clicks on the zone, the action is executed.
    * A link can be invisible, or drawn as a rectangle with a border. The border width and color can be specified.
    * It is placed when added to a page.
    * Link is a static entity, and a similar dynamic entity exists with button field.


Table
-----

    * A table can be created programatically using Advanced Publishing API, which can support very rich table layout.
    * It is placed when added to a page.


2D Drawings
-----------

    * A 2D drawing is a rectangle, line, arc, bezier curve, or composite path that is drawn on the page.
    * It is placed when added to a page.


Widget Fields
-------------

    * Widget fields are the 'field' entities implemented by Adobe Acrobat.
    * They can be created using Adobe Acrobat application, or programatically using Advanced Publishing API.
    * Content and visibility can be modified at creation time with Advanced Publishing API.
    * Interactivity applies to widget fields and can be handled by a data model, or by JavaScript for advanced usage.
    * Advanced Publishing supports following types:

        * Text field
        * Button
        * Dropdown list
        * List box
        * Radio button
        * Check box
        * Digital signature


High Level Widgets
------------------

    * A high level widget is a dynamic entity formed of more basic entities.
    * They can only be created using Advanced Publishing API.
    * Interactivity applies to high level widgets and is generally handled by a data model.
    * Advanced Publishing supports following types:

        * View carousel
        * Scroll table
