Jump To:
Leopard Reference Library
The Mac OS X printing system is based on CUPS (Common UNIX Printing System). Mac OS X printing supports PostScript and raster printers, and offers features such as job spooling via IPP (Internet Printing Protocol), and PDF and Quartz imaging. The printing system allows applications to present extensible user interfaces so that developers can extend Apple's interface rather than write code to override it.

A guided introduction and learning path for developers new to Mac OS X printing.   Essential information for developers using Apple's printing environment.  
Document Descriptions
On Off
Display

Sort by
Title
Sort by
Topic
Sort by
Resource Type
Sorted by
Date
PMPrinterTest (HTML) (DMG) (ZIP)
Demonstrates using the PMPrinter APIs to obtain information about the connected printers.
Carbon, Cocoa Sample Code 2009-02-13
NSView Class Reference (HTML) (PDF)
Describes the interface for drawing, event handling, and printing in views.
Cocoa Reference 2009-02-04
NSPrintInfo Class Reference (HTML) (PDF)
Describes the print settings used for a print job.
Cocoa Reference 2009-01-06
NSBox Class Reference (HTML) (PDF)
Describes a view that can display its border and a title.
Cocoa Reference 2008-10-15
Generating a Non-Maskable Interrupt (NMI) (HTML) (日本語 HTML)
QA1264: Explains how to generate a non-maskable interrupt (NMI) on modern Macintosh systems.
Hardware & Drivers Technical Q&As 2008-10-13
Retain Counts of io_object_t Objects in IOKit.framework (HTML) (日本語 HTML)
QA1195: Distinguishes between the retain counts of an I/O Kit kernel object and its io_object_t user space proxy.
Hardware & Drivers Technical Q&As 2008-09-24
Gathering all PostScript Printer Descriptions (PPDs) (HTML)
QA1529: Describes a work around for an issue in PMCopyAvailablePPDs on Mac OS X 10.4 and below
Carbon, Cocoa, CUPS Technical Q&As 2008-08-08
Using PPD constraints with Paper Sizes (HTML)
QA1603: Describes the requirements for using PPD Constraints to constrain options against paper size.
CUPS, Device Drivers Technical Q&As 2008-08-08
Getting a Packet Trace (HTML) (日本語 HTML)
QA1176: Lists tools available for looking at the network packets on the wire.
Networking Technical Q&As 2008-06-03
Bonjour Printer Subtype for HTTP (HTML)
QA1555: Describes how printer vendors can register their bonjour service such that Safari can see them.
Networking Technical Q&As 2008-03-25
OutputBins2PDE (HTML) (DMG) (ZIP)
A Printer PDE demonstrating new features in 10.5
Carbon, Cocoa Sample Code 2008-02-08
PDEPanel Protocol Reference (HTML) (PDF)
Describes the informal protocol used to implement custom panes in a printing dialog.
Carbon, Cocoa Reference 2007-12-11
PDEPlugIn Protocol Reference (HTML) (PDF)
Describes the informal protocol used to add custom panes to a printing dialog.
Carbon, Cocoa Reference 2007-12-11
PDEPlugInCallbackProtocol Reference (HTML) (PDF)
Describes the informal protocol used to access information about the current print job.
Carbon, Cocoa Reference 2007-12-11
Providing PDF Workflow Options in the Print Dialog (HTML) (PDF)
Installation information and examples, including the use of Automator workflows.
Carbon, Cocoa Guides 2007-10-31
How to measure CG text (HTML)
QA1051: Explains how to measure Core Graphics text.
Carbon, Cocoa Technical Q&As 2007-08-02
Cocoa PDE with Carbon Printing (HTML) (DMG) (ZIP)
Application that uses a Cocoa PDE along with the Carbon Printing APIs.
Carbon Sample Code 2007-07-27
Carbon Printing Reference (HTML) (PDF)
Describes the C API used by Carbon applications to provide a user interface for printing.
Carbon Reference 2007-07-24
Core Printing Reference (HTML) (PDF)
Describes the C API that provides an abstraction layer for application printing.
Carbon, Cocoa Reference 2007-07-24
NSPrintPanel Class Reference (HTML) (PDF)
Describes a print dialog.
Cocoa Reference 2007-07-16
ViewController (HTML) (DMG) (ZIP)
Demonstrates how to use "NSViewController".
Cocoa Sample Code 2007-06-11
Printer Queue vs. Printer Name (HTML)
QA1407: Explains the difference between a printer queue and a printer name.
Carbon Technical Q&As 2007-04-26
NSPageLayout Class Reference (HTML) (PDF)
Describes a printing dialog for querying the user about page layout.
Cocoa Reference 2007-04-11
Saving Printer Settings for Automatic Printing (HTML)
TN2155: Describes how you can save a a user selected Printer, Print Settings and Page Format to disk.
Carbon Technical Notes 2007-03-29
NSHost Class Reference (HTML) (PDF)
Describes a representation of a network host.
Networking Reference 2007-03-24
NSPrintOperation Class Reference (HTML) (PDF)
Describes a print job.
Cocoa Reference 2007-03-02
NSPrinter Class Reference (HTML) (PDF)
Describes a representation of a printer as specified by a PPD file.
Cocoa Reference 2007-01-29
Extending Printing Dialogs (HTML) (PDF)
A guide to developing printing dialog extensions, including basic concepts and a documented Carbon-based sample project.
Carbon Guides 2006-10-03
PMPrinterPrintWithFile (HTML) (DMG) (ZIP)
How to send files, for example PostScript and PDF, directly to the printer. Replaces the pict-ps path.
Carbon Sample Code 2006-07-18
Printing Programming Topics for Cocoa (HTML) (PDF)
Explains how to support printing in Cocoa applications.
Cocoa Guides 2006-06-28
Mac OS X Printing System Overview (HTML) (PDF)
Introduces Apple's printing architecture. Includes a road map for developing software.
General Guides 2006-02-07
Obtaining 16 Bits-Per-Color Data with CUPS Raster Printing (HTML)
TN2149: Obtaining 16 Bits-Per-Color Data with CUPS Raster Printing
CUPS, Hardware & Drivers Technical Notes 2005-08-24
Combinations of cupsColorSpace, cupsColorOrder and cupsBitsPerColor values supported by Mac OS X (HTML)
QA1368: Table of supported combinations of cupsColorSpace, cupsColorOrder and cupsBitsPerColor values supported by Mac OS X.
CUPS Technical Q&As 2005-08-10
Creating Printing Presets for iPhoto (HTML) (PDF)
Rules for creating and installing printer-specific collections of settings. Includes a sample file.
Carbon, CUPS Guides 2005-07-07
Using PostScript Printer Description Files (HTML) (PDF)
Information for printer vendors. Includes installing files, PPD/PDE binding, and grouping features.
Carbon, Cocoa Guides 2005-07-07
Mixing link-local IP addresses and routable IP addresses (HTML)
QA1357: Explains how to enable communication between devices with link-local addresses and devices with routable addresses.
Networking Technical Q&As 2005-07-06
Detecting low printer ink levels (HTML)
TN2144: How to detect printer supply levels using a low ink tool
Hardware & Drivers, Networking Technical Notes 2005-06-29
CarbonSketch (HTML) (DMG) (ZIP)
Core Graphics only example of a Sketch application implemented with HIToolbox. Shows 1x1-CGBitmapContext for hit-testing, printing.
Carbon Sample Code 2005-03-23
Supporting Printing in Your Carbon Application (HTML) (PDF)
Explains how to support printing in Carbon applications. Includes creating PDFs and porting from Mac OS 9.
Carbon Guides 2004-08-31
New PPD keywords available in Mac OS X version 10.3 (HTML)
QA1352: Describes the new PPD keywords available for CUPS filters in Mac OS X 10.3.
CUPS, Hardware & Drivers Technical Q&As 2004-05-26
The Enhanced Print Apple Event (HTML)
TN2082: Describes an enhancement to the print Apple event that gives developers more control over scripted printing.
Carbon, Cocoa Technical Notes 2003-12-09
Printing Plug-in Interfaces Reference (HTML) (PDF)
Describes the various callback interfaces that Mac OS X printing plug-ins implement in Carbon.
Carbon Reference 2003-07-31
Tioga PostScript Printing Plugins in Mac OS X 10.2 (HTML) (日本語 HTML)
QA1085: Why Tioga printing plugins for PostScript printing aren't called on Mac OS X 10.2 and later.
CUPS, Hardware & Drivers Technical Q&As 2003-07-14
How do I use PMSessionGetGraphicsContext to get a CGContextRef? (HTML) (日本語 HTML)
Deprecated - QA1216: Describes how to use PMSessionSetDocumentFormatGeneration and PMSessionGetGraphicsContext to get a CGContextRef for printing.
Carbon Technical Q&As 2003-02-25
Quartz 2D Thread Safety (HTML) (日本語 HTML)
QA1238: Explains the thread-safety issues for the Quartz 2D API.
Carbon, Cocoa Technical Q&As 2003-02-25
CarbonQuartzDrawingWPrinting (HTML) (DMG) (ZIP)
Deprecated - Demonstrates mixing QuickDraw and Quartz 2D drawing both on screen and during printing.
Carbon Sample Code 2003-01-14
PDEProject (HTML) (DMG) (ZIP)
Deprecated - Demonstrates an application-hosted printing dialog extension (PDE) that displays a custom pane in the Print dialog.
Carbon Sample Code 2003-01-14
Why does logging keep my Printer Module from working? (HTML) (日本語 HTML)
Deprecated - QA1182: Describes some problems with standard printf logging in a Printer Module on Jaguar.
Hardware & Drivers Technical Q&As 2002-11-06
Quartz 2D Interpolation (HTML) (日本語 HTML)
QA1186: Explains how to control Quartz 2D's image interpolation.
Carbon, Cocoa Technical Q&As 2002-10-29
Ticket Services Reference (HTML) (PDF)
Describes the C API used by printer modules and PDEs to communicate printing information to the system.
Carbon Reference 2002-10-23
Why don't all of my PDE localizations show up in all applications? (HTML) (日本語 HTML)
QA1185: Explains why some PDE localizations might not appear in all applications.
Hardware & Drivers Technical Q&As 2002-10-16
CGContextClosePath (HTML)
QA1046: Explains when you should call CGContextClosePath.
Carbon, Cocoa Technical Q&As 2001-10-02
Saving the current Core Graphics Path (HTML)
QA1056: Explains that the Core Graphics save and restore GState APIs do not affect the path.
Carbon, Cocoa Technical Q&As 2001-10-02
CGContext Bounds (HTML)
QA1048: Explains how to determine the bounds of a CGContext.
Carbon, Cocoa Technical Q&As 2001-07-02
CGContextAddLineToPoint, CGContextAddCurveToPoint, et. al. (HTML)
QA1049: Explains why the CGContextAddXYZ APIs don't draw anything immediately.
Carbon, Cocoa Technical Q&As 2001-07-02
Drawing a Path Multiple Times (HTML)
QA1047: Explains that path drawing operations consume the path.
Carbon, Cocoa Technical Q&As 2001-07-02
Turning Off Core Graphics Clipping (HTML)
QA1050: Explains how to clear the clipping path for a CGContext.
Carbon, Cocoa Technical Q&As 2001-07-02
Unexpected CG state changes (HTML)
QA1045: Explains why the Core Graphics drawing state sometimes changes for no apparent reason.
Carbon, Cocoa Technical Q&As 2001-07-02
ATSUI and MLTE Printing (HTML) (日本語 HTML)
Deprecated - QD64: Describes a way to get MLTE and ATSUI text to print through the QuickDraw bottlenecks.
Carbon Technical Q&As 2000-11-08
Checking for the Printer Driver (HTML)
Deprecated - DV42: Describes a legacy Mac OS technique avoiding system hangs when using serial drivers on USB systems.
Hardware & Drivers Technical Q&As 2000-06-19
Are the Name Registry device tree nodes unique? (HTML)
Deprecated - HW64: Discusses whether Name Registry nodes copied from the Open Firmware device tree are unique.
Hardware & Drivers Technical Q&As 1999-10-11