An abstract base class for print formatters, which are objects that lay out custom printable content that can cross page boundaries.


@interface UIPrintFormatter : NSObject


Given a print formatter, the printing system can automate the printing of the type of content associated with the print formatter. Examples of such content could be a web view, a mix of images and text, or a long text document. The UIKit framework provides several concrete subclasses of UIPrintFormatter: UISimpleTextPrintFormatter, UIMarkupTextPrintFormatter, and UIViewPrintFormatter.

You can assign a single print formatter for a print job via the printFormatter property of the UIPrintInteractionController shared instance; or you can specify one or more print formatters that are associated with specific pages of a page renderer through the addPrintFormatter:startingAtPageAtIndex:method of UIPrintPageRenderer. A page renderer is an instance of a custom subclass of UIPrintPageRenderer that draws content for printing.

UIPrintFormatter publishes an interface that allows you to specify the starting page for a print job and the margins around the printed content; given that information plus the content, a print formatter computes the number of pages for the print job. Figure 1 depicts the print-formatter properties, along with certain UIPrintPaper and UIPrintPageRenderer properties, that define the layout of a multi-page print job.

Figure 1

Layout of printed content

Third-party subclasses of UIPrintFormatter are not recommended. If you have custom content to print, use a custom UIPrintPageRenderer object.


Laying Out the Content


The distances the edges of content are inset from the printing rectangle.


The margins for each printed page.


The maximum height of the content area.


The maximum width of the content area.

Managing Pagination


The index of the first page that the print formatter lays out.


The number of pages to be printed.

Drawing the Content

- drawInRect:forPageAtIndex:

Draws the portion of a print formatter’s content that goes in the given area for the specified page

- rectForPageAtIndex:

Returns the area enclosing a specified page of content.

Communicating with the Page Renderer

- removeFromPrintPageRenderer

Removes the print formatter from the page renderer.


Returns the page renderer with which the receiver is associated.


Inherits From

Conforms To

See Also



An object that lays out the drawn content (which can span multiple pages) of a view for printing.


An object that lays out plain text for printing, possibly over multiple pages.


An object that lays out HTML markup text for a multipage print job.