Print Schema Breaking Changes and PrintTicket/PrintCapabilities API behavior changes


These changes will NOT appear in Beta 2. These changes will be included in the RC1 release of Vista.

Please email for any questions or comments or use the feedback form on this blog.


Print Schema Keyword String Changes

We will be making changes to the following keywords in the Print Schema for RC1.

Old Keyword Name

New Keyword Name

New Keyword Definition



Describes the stapling characteristics of the output. All documents in the job are stapled together.



Describes the collating characteristics of the output. All documents in the job will be collated.



Describes the method of binding. All documents in the job are bound together.



Describes the duplex characteristics of the output. The duplex feature allows for printing on both sides of the media. All documents in the job are duplexed together contiguously.



Describes the output of multiple logical pages to a single physical sheet. All documents in the job are compiled together contiguously.



Describes the banner sheet to be output for the job. The banner sheet should be output on the default PageMediaSize and using the default PageMediaType.  The banner sheet should be isolated from the remainder of the job. This means that any finishing or processing options (such as JobDuplexAllDocumentsContiguously, JobStapleAllDocuments, JobBindAllDocuments) should not include the banner sheet. The banner sheet should occur as the first sheet of the job.



Describes the back (ending) cover sheet. Each job will have a separate primary sheet. The cover sheet should be printed on the PageMediaSize and PageMediaType used for the final page of the job. The cover sheet should be integrated into processing options (such as JobDuplexAllDocumentsContiguously, JobNUpAllDocumentsContiguously) as indicated by the Option specified.



Describes the front (beginning) cover sheet. The entire job will have a single primary sheet. The cover sheet should be printed on the PageMediaSize and PageMediaType used for the first page of the job. The cover sheet should be integrated into processing options (such as JobDuplexAllDocumentsContiguously, JobNUpAllDocumentsContiguously) as indicated by the Option specified.



Describes the cutting method for roll paper. The roll should be cut at the end of the job.



Specifies the number of copies of a job.



Specifies the number of copies of a document.



Specifies the number of copies of a page.



Specifies the source for a primary custom banner sheet for the job.



Specifies the width of the binding gutter.



Specifies the source for a custom back-cover primary sheet for the job.



Specifies the source for a custom front-cover primary sheet for the job.

Print Schema Keyword Format: <Scoping Prefix>[Suffix] for example, <Job>[InputBin]

The above keyword string changes have been made to distinguish between features which in the past have not been interpreted correctly. For example, JobDuplexAllDocumentsContiguously is a different feature then DocumentDuplex. However, JobInputBin and PageInputBin are the same feature, defined at different scoping prefixes.

Any provider of a PrintCapabilities document MUST NOT have any feature specified that is defined at more than one scoping prefix in a single Print Capabilities document. Changes will be made to GetPrintCapabilities API to explicitly disallow multiple features with the same suffix to be specified at different scoping prefixes in both public and private namespaces. For example, if a PrintCapabilities document has both JobInputBin and PageInputBin specified, then both of these keywords will result in an error code being returned from the PTGetDeviceCapabilities API and possibly other PrintTicket/PrintCapabilities APIs as well. However, a Print Capabilities document MAY have both JobDuplexAllDocumentsContiguously and DocumentDuplex specified in a Print Capabilities document because these are considered different features, as they exhibit differing behavior, as indicated by different suffixes. The same rules apply to a PrintTicket.

Changes to Processing of PrintTicket/Print Capabilities

Support will be added for auto-mapping between a PrintTicket and Print Capabilities document. The new auto-mapping will map features with a less-specific scoping prefix to features with a more specific scoping prefix if the device supports the more specific prefix, but not the less specific one. For example, if a PrintTicket advertises JobInputBin, and the Print Capabilities document from the driver advertises PageInputBin, then the auto-mapping will map JobInputBin to PageInputBin in the resulting PrintTicket. By providing auto-mapping on each API that takes a PrintTicket as input, the driver will always see the result of the auto-mapping, and should never have to take it into account. Auto-mapping does not need to occur on PrintTickets produced by the driver, or the PrintCapabilities, since it is also always produced by the driver. As described above, features such as JobDuplexAllDocumentsContiguously and DocumentDuplex are considered different features and therefore auto-mapping would not occur between these differing features. Auto-mapping will only occur where the feature exhibits the same suffix but different scoping prefix.

The new auto-mapping will NOT cause any WinFX PrintTicket/Print Capabilities API behavior changes, but they will cause the code to internally use the new Print Schema keyword string names described above. However, System.Printing.PrintCapabilities.CollationCapability and System.Printing.PrintTicket.Collation will be changed to use “DocumentCollate” as the underlying Print Schema feature. This is because the new “JobCollateAllDocuments” name doesn’t match to what the GPD/PPD’s collate feature is defined as.

Changes to Name Attributes


In earlier version of the PrintsSchema framework specification, names on Option elements were considered scored properties, and could be written as such. Using a name attribute was allowed as a shorthand because this was such a common case. However, the longhand is no longer necessary, and far less convenient. The extended definition of the name attribute will no longer be allowed or supported.

For example, this is invalid now:


            <psf:Feature name="psk:PageMediaSize">


                                    <psf:ScoredProperty name="psk:OptionName">

                            <psf:Value xsi:type="xsd:string">psk:NorthAmericaLetter</psf:Value>


                                    <psf:ScoredProperty name="psk:MediaSizeWidth">

                                                <psf:Value xsi:type="xsd:integer">215900</psf:Value>


                                    <psf:ScoredProperty name="psk:MediaSizeHeight">

                                                <psf:Value xsi:type="xsd:integer">279400</psf:Value>




This is the correct representation is shown below:

           <psf:Feature name="psk:PageMediaSize">

                        <psf:Option name =" psk:NorthAmericaLetter " >

                                    <psf:ScoredProperty name="psk:MediaSizeWidth">

                                                <psf:Value xsi:type="xsd:integer">215900</psf:Value>


                                    <psf:ScoredProperty name="psk:MediaSizeHeight">

                                                <psf:Value xsi:type="xsd:integer">279400</psf:Value>