# Advanced Function Presentation

Advanced Function Presentation (AFP) is a presentation architecture and family of associated printer software and hardware that provides for document and information presentation independent of specific applications and devices.
Using AFP, users can control formatting, the form of paper output, whether a document is to be printed or viewed online, and manage document storage and access in a distributed network across multiple operating system platforms. AFP is primarily used in large enterprises for production variable data printing (VDP).
AFP applications allow users or print room operators to distribute print jobs among a group of printers and to designate backup printers when one fails. AFP is considered to be a "cornerstone" of electronic document management (EDM) applications such as print-and-view, archive and retrieval, and enterprise report management (ERM).

## History

AFP was originally developed by IBM as a general purpose document and information presentation architecture, originally called Advanced Function Printing. The first specifications and products go back to 1984. The major concepts of object-driven structures, print integrity, resource management, and support for high print speeds have been preserved ever since.
In October 2004 IBM initiated the formation of the AFP Color Consortium (AFPCC). The purpose was to collaboratively develop color management support in the AFP architecture. This resulted in the creation of the new AFP CMOCA (Color Management Object Content Architecture) specification, which was first published in 2006.
In May 2006 IBM announced plans to open up the complete scope of the AFP architecture to the consortium. This new initiative was finalized in September 2006 and is now called simply the AFP Consortium (AFPC). In June 2007, IBM's role as founding member of the AFPC was transferred to InfoPrint Solutions Company, an IBM - Ricoh joint venture, and later to Ricoh. In February 2009 the AFPC was incorporated under a new set of bylaws with tiered membership and shared governance resulting in the creation of a formal open standards body called AFP Consortium Inc. Total membership has grown to over 35 companies and includes members from all parts of the document-processing industry. More information on the AFPC can be found at the AFPC Consortium.

## Components

The AFP architecture consists of a number of sub-architectures:
* MO:DCA-P (Mixed Object:Document Content Architecture-Presentation), the Page Description Language file format that describes the text and graphics on a page. The 'Mixed Object' moniker refers to the fact that a MO:DCA file can contain multiple types of objects, including text, images, vector graphics, and even objects marked as 'barcodes'. An application can simply include a string of digits along with controls that identify a specific type of barcode, and the rendering of bars will be done on the output platform (physical printer hardware or software emulation). A MO:DCA file consists of a sequential, ordered hierarchy of independent objects - documents, pages, data objects, and resource objects such as fonts and ICC profiles. Each object is delimited by begin/end structures, and objects to be rendered specify presentation parameters and resource requirements in structures called "environment groups". Since the pages in MO:DCA documents appear in sequential order, presentation can start as soon as the first page is received. The MO:DCA format is comparable to other PDLs that specify distinct pages such as PDF. MO:DCA-P is sometimes called AFPDS (AFP Data Stream).
* IPDS Intelligent Printer Data Stream. This is the bi-directional protocol used between the host server and the printer. It is used to send the page-level data to the printer and to signal errors and accounting information back to the server. The IPDS protocol also allows the server to query a printer's available resources (e.g. available memory, fonts, input trays, etc.). It is comparable to protocols like Internet Printing Protocol.
* Bar Code Object Content Architecture (BCOCA), which is used to describe and generate bar codes.
* Color Management Object Content Architecture (CMOCA), which defines resources that carry color management information, such as ICC profiles, tone transfer curves, and halftones.
* Graphics Object Content Architecture for AFP (AFP GOCA), which is used to define and generate vector graphics.
* Image Object Content Architecture (IOCA), which is used to define and generate raster images.
* Presentation Text Object Content Architecture (PTOCA), which is used to define and generate text.
Specifications defining all of the AFP sub-architectures can be found at the AFP Consortium.
AFP also supports other industry-standard data formats using the concept of AFP object containers; examples are TIFF, GIF, JPEG (JFIF), EPS, and PDF. These objects can be mixed as peer objects on an AFP page with native AFP objects such as BCOCA, AFP GOCA, IOCA, and PTOCA objects.

## Print modes

"AFP can be printed 'offline', using the AFPDS format converted on the fly" into another page description language. It can also "be printed 'online' through various software like PSF (Print Service Facility) on an IBM system or through a spooler like S2P, IPM... creating IPDS on the fly."

## IBM implementation

The original tool to produce AFP output and to drive the IBM printers was Print Service Facility (PSF), which is still in use on IBM mainframes today. It formats the input data to be printed based on definitions on how to place the data on the page, called PAGEDEF and FORMDEF. This service also allowed the definition of electronic forms, named OVERLAYS.
PSF is not only able to format the documents, but also to drive AFP or, more precisely, IPDS printers. IPDS stands for Intelligent Print Data Stream. It is a bidirectional format where the software is constantly in control of the printer and knows at all times the status of the pages sent to the printer, making it convenient for high volume production printers, that print 100 pages or more within a minute.
IBM also offered the PSF software not only on the mainframe, but on all of their platforms, so there were PSF/390 (for the OS/390 mainframe), PSF/VSE (for IBM VSE/ESA based systems), PSF/6000 (for AIX), PSF/400 (for IBM i) and PSF/2 running under OS/2. Unfortunately, all of these behaved slightly differently, and IBM renamed PSF then into InfoPrint Manager (IPM).
Included with the PSF tools is the ACIF (AFP Conversion and Indexing Facility) that allows one to produce the AFP documents as a file in order to keep them and print them later, as well as adding an index to the document, very similar to Bookmarks in PDF, used for archiving purposes.
AFP was designed to make efficient use of storage, which is why it is still a popular format to manage high volumes of documents, such as in banking, telecommunication and insurance companies. The format originates from the MVS environment, so it typically uses the EBCDIC based codepages. As with all page description languages (like PostScript, PDF, and PCL), it is necessary to use a viewer to display documents.
One of the more notable features of AFP printers is that output data can be placed at any addressable point on a page. This capability is called all points addressability (APA). APA gives AFP applications the freedom to create output anywhere on a page, as opposed to being limited to just line and character positions.