People appreciate the extensive options offered by the printing system, and expect them to be available in any app. If applicable, your app should integrate with the printing system so users can print documents, images, PDFs, and other content.

Make printing discoverable. All apps that support printing should include a Print option in the File menu. If your app has a toolbar, consider offering a Print button there as well for convenience. To avoid cluttering the toolbar, make it an optional button that can be added by the user through customization. See File Menu and Toolbars.

Enable printing only when it's possible to print. If there’s nothing onscreen to print or no printers are available, the Print menu should be disabled. If your app implements a custom print button, disable or hide it when printing isn’t possible.

For developer guidance, see Printing Programming Guide for Mac.

Page Setup Dialogs

A Page Setup dialog includes rarely changed settings that affect page size, orientation, and scaling when printing a particular document.

Use a Page Setup dialog to expose document-specific and infrequently changed print options. Settings that are global in nature or that change every time the user prints should be located in the Print dialog.

Store modified Page Setup settings with the document. Page Setup options vary from document to document. If the user adjusts the page setup of a document, those changes should persist until the user adjusts them again.

A Print dialog focuses on printing the current document and can include system-provided, app-specific, and printer-specific printing options. By default, a print dialog is displayed in a collapsed form that presents the most commonly changed settings. The user can expand the dialog to reveal additional functionality.

Use the system-provided Print dialog. The standard dialog is familiar to people and includes lots of useful options that the system provides automatically.

Enable relevant printing options. Think about the options people might want to specify when they print your content. Consider options for selecting a page range and requesting multiple copies. Enable additional options, such as front and back printing, if it makes sense and the printer supports them.

App-Specific Print Options

In expanded form, the Print dialog includes a pop-up button that provides access to several categories of settings. The system implements some standard categories like Layout and Paper Handling. Your app can implement its own category for app-specific options. For example, Contacts offers options for printing mailing labels and envelopes.

Use an intuitive category name that doesn’t conflict with system-provided categories. In general, the category name should be your app’s name.

Implement features the system doesn’t already provide. For example, Keynote offers presentation-specific options, like the ability to print presenter notes, slide backgrounds, and skipped slides. It doesn't include options like changing the page orientation or printing in reverse order because these options are already implemented by the system.

Make sure interdependencies between options are clear. For example, if double-sided printing is enabled, then an option to print on transparencies should become unavailable.

Separate advanced features from frequently used features. Consider using a disclosure control to hide advanced options until the user needs them. Label advanced options as Advanced Options.

When appropriate, preview the effect of setting changes. For example, you could update a thumbnail image to show the effect of changing a tone control.

Consider storing modified settings with the document. At minimum, it makes sense to store print settings until the document is closed in case the user wants to print again.