Where Are We?
The XML Paper Specification is at the heart of printing in WPF. It
also acts as a file format for accurately capturing an application's
printable output. WPF lets us work with XPS files at various levels.
There are the high-level FixedDocumentSequence, FixedDocument, and FixedPage classes, which mirror the basic
structure of an XPS file but allow us to use WPF elements such as layout
primitives that are not directly supported in XPS. The XpsDocumentWriter maps between this framework
element world and the lower-level world of the XPS file.
We can either build an XPS file on disk or send it directly to the
print system. If we provide a "save as XPS" feature, we may choose to
add extra structure to enhance the resulting XPS files, typically
working directly at the XPS package level with the System.Windows.Xps.Packaging namespace. Or, if
we wish, we can go lower still, using the System.IO.Packaging namespace to work directly
at the OPC level.
The System.Printing namespace
provides us with various types to control the printing process, such as
choosing output servers and queues, and configuring the print
settings.