I was recently given some feedback that we haven't explained the concept of partial vs. complete PrintTickets well enough. Here's some thoughts that should be helpful:
- A complete print ticket is one that contains settings for all features & mandatory parameters that a printer supports. A complete PrintTicket is not necessarily a valid PrintTicket, because some device settings or settings in the PrintTicket may have been changed from the time that the PrintTicket was generated. Complete PrintTickets are the result of calls to PTMergeAndValidatePrintTicket, and convert DEVMODE to PrintTicket
- A validated PrintTicket can only be obtained from PTMergeAndValidatePrintATicket, and is only valid until the device settings change. The PrintTicket doesn't contain any indication of what the device settings were at the time that it was generated. Validation of the PrintTicket is intended to give the user feedback on which settings can actually be handled by the printer at the time they set up the print job, and to validate the configuration in an XPS package at print time.
- A partial PrintTicket is most often a PrintTicket that has been generated by an application to configure settings for some specific scope, e.g. setting the page size for a single page in a multi-page document. The ticket does not contain all of the settings for the device.
From an XPS consumer's standpoint, handling a partial PrintTicket or a complete PrintTicket is largely the same: the settings may contain constraints or stale data that should be run through 'PTMergerAndValidatePrintTicket' before providing information to the user. Handling of tickets associated with a page in an XPS package require a bit of careful handing, but that's a topic for another day.
If you still have questions about XPS or PrintTicket, you can get email to me by sending a message to email@example.com, or you can leave your comments here.
(note: post was edited to fix formatting errors)