Code to handle printing is always relatively hard to write. Many factors are at play, like pagination, margins, and page orientation (landscape versus portrait). This chapter is designed to get you started on your journey toward the perfect printout.
Compared to most operating systems, OS X makes writing print routines considerably easier. After all, your views already know how to generate PDF, and OS X knows how to print PDF. If you have a document-based application and a view that knows how to draw itself, you simply implement printOperationWithSettings(_:error:). In this method, you create an NSPrintOperation object, using a view, and return it. The code, in your NSDocument subclass, would look like this: