An object that draws pages of content that are to be printed, with or without the assistance of print formatters.


class UIPrintPageRenderer : NSObject


A page renderer is an instance of a custom subclass of UIPrintPageRenderer. When you compose a print job using the shared instance of UIPrintInteractionController, you assign the page renderer to the printPageRenderer property of that instance. The subclass typically overrides one or more of the five draw... methods:

  • The drawPage(at:in:) by default calls each of the other draw methods, in the order listed below. Your application can override it if you want to have complete control over what is drawn for printing.

  • Override drawHeaderForPage(at:in:) to draw content in the header.

  • Override drawContentForPage(at:in:) to draw the main content of the print job in the area between the header and the footer.

  • Override drawPrintFormatter(_:forPageAt:) to intermix custom drawing with the drawing performed by an associated print formatter. This method is called for each print formatter associated with a given page.

  • Override drawFooterForPage(at:in:) to draw content in the footer.

UIPrintPageRenderer usually requires you to specify the number of pages of printable content by overriding numberOfPages. It also allows you to specify the heights of page headers and footers.

You may assign one or more print formatters—that is, UIPrintFormatter objects that can lay out printable content of a certain kind—to specific page ranges of the content. For example, if your printable content is partially HTML, you may assign an instance of the UIMarkupTextPrintFormatter object to the starting page of HTML content. You assign a print formatter using the addPrintFormatter(_:startingAtPageAt:) method and you can get the print formatters for a given page by calling printFormattersForPage(at:).


Accessing Information About the Print Job

var numberOfPages: Int

The number of pages to render.

var paperRect: CGRect

The size of the paper used for printing.

var printableRect: CGRect

The area in which printing can occur.

Specifying Header and Footer Heights

var headerHeight: CGFloat

The height of the page header.

var footerHeight: CGFloat

The height of the page footer.

Managing Print Formatters

func addPrintFormatter(UIPrintFormatter, startingAtPageAt: Int)

Adds a print formatter to the page renderer starting at the specified page.

func printFormattersForPage(at: Int) -> [UIPrintFormatter]?

Returns the print formatters associated with a specified page.

var printFormatters: [UIPrintFormatter]?

The print formatters associated with the page renderer.

Preparing for Drawing

func prepare(forDrawingPages: NSRange)

Overridden by the page renderer to prepare for drawing a range of pages.

Drawing a Page

func drawPage(at: Int, in: CGRect)

Overridden to draw a given page of content for the printer.

func drawHeaderForPage(at: Int, in: CGRect)

Overridden to draw the header of the given page.

func drawContentForPage(at: Int, in: CGRect)

Overridden to draw the content of the given page.

func drawPrintFormatter(UIPrintFormatter, forPageAt: Int)

Overridden to add custom drawing to the drawing provided by a given print formatter for a page.

func drawFooterForPage(at: Int, in: CGRect)

Overridden to draw the footer of the given page.


Inherits From

Conforms To