Getting capabilities for the printer registered through Universal Print connector
Process
To convert the capabilities of a printer from its driver to the supported IPP attributes, Universal Print follows the following process:
Step1: Connector gets printer's capabilities from the driver being used through its Print Device Capabilities (PDC). If PDC is not available, Universal Print uses the combination of Print Capabilities (PC) and Print Ticket (PT) to generate a PDC.
Step2: Universal Print parses the PDC XML and maps the elements and options to IPP Printer Description Attributes (PDAs). If a mapping is not found, then the PDC print attribute is ignored and dropped from the Universal Print printer options. For example, if the A6 paper option is listed under PageMediaSize
as ns0001:ISOA6_PAPER
then it will not be recognized. However, if it is included as psk:ISOA6
then it will be accepted and converted to the corresponding IPP attribute.
Namespaces
While mapping the top-level PDC elements to IPP Printer Description Attributes, Universal Print only looks at the name of the element and ignores the namespace. For example, psk:PageOutputColor
is mapped to print-color-mode-supported
, but if the element was ns0001:PageOutputColor
it would still be mapped correctly to print-color-mode-supported
.
For the options underneath elements, Universal Print sometimes does require the namespace to match and currently supports the namespaces below. If no namespace is given in the PDC to IPP mapping table, that means the conversion is performed regardless of namespace.
Namespace | URL |
---|---|
ns0000 |
http://schemas.microsoft.com/windows/2018/04/printing/printschemakeywords/Ipp |
xsi |
http://www.w3.org/2001/XMLSchema-instance |
xsd |
http://www.w3.org/2001/XMLSchema |
xml |
http://www.w3.org/XML/1998/namespace |
psk |
http://schemas.microsoft.com/windows/2003/08/printing/printschemakeywords |
psk12 |
http://schemas.microsoft.com/windows/2013/12/printing/printschemakeywordsv12 |
psf |
http://schemas.microsoft.com/windows/2003/08/printing/printschemaframework |
psf2 |
http://schemas.microsoft.com/windows/2013/12/printing/printschemaframework2 |
PDC to IPP mapping
Here is the information on how elements and options are mapped from PDC to IPP.
PDC Top-level element | IPP Printer Description Attribute | Options underneath PDC top-level element | Values inside IPP Printer Description Attribute |
---|---|---|---|
PageOutputColor |
print-color-mode-supported print-color-mode-default |
psk:Monochrome |
monochrome |
psk:Color |
color |
||
psk:Grayscale |
monochrome |
||
psk:Highlight |
highlight |
||
JobCopiesAllDocuments |
copies-supported copies-default |
MaxValue |
Used as the maximum value in the copies-supported range . 1 is always used as the minimum value |
DefaultValue |
Used as the value in copies-default |
||
PageOrientation |
orientation-requested-supported orientation-requested-default |
psk:Portrait |
3 |
psk:Landscape |
4 |
||
psk:ReverseLandscape |
5 |
||
psk:ReversePortrait |
6 |
||
DocumentDuplex JobDuplexAllDocumentsContiguously |
sides-supported sides-default |
psk:OneSided |
one-sided |
psk:TwoSidedLongEdge |
two-sided-long-edge |
||
psk:TwoSidedShortEdge |
wwo-sided-short-edge |
||
PageMediaSize |
media-supported media-default media-col-database media-col-default |
_4X6 |
na_index-4x6_4x6in |
_5X7 |
na_5x7_5x7in |
||
_5X8 |
na_index-5x8_5x8in |
||
Br3x5 |
na_index-3x5_3x5in |
||
CreditCard |
om_card_54x86mm |
||
EnglishPhoto-L |
oe_photo-l_3.5x5in |
||
ISOA3 |
iso_a3_297x420mm |
||
ISOA4 |
iso_a4_210x297mm |
||
ISOA5 |
iso_a5_148x210mm |
||
ISOA6 |
iso_a6_105x148mm |
||
^ See Notes | ISOB5Envelope |
iso_b5_176x250mm |
|
^ See Notes | ISOC4Envelope |
iso_c4_229x324mm |
|
^ See Notes | ISOC5Envelope |
iso_c5_162x229mm |
|
^ See Notes | ISODLEnvelope |
iso_dl_110x220mm |
|
^ See Notes | JapanChou3Envelope |
jpn_chou3_120x235mm |
|
^ See Notes | JapanChou40Envelope |
jpn_chou40_90x225mm |
|
^ See Notes | JapanChou4Envelope |
jpn_chou4_90x205mm |
|
JapanHagakiPostcard |
jpn_hagaki_100x148mm |
||
^ See Notes | JapanKaku2Envelope |
jpn_kaku2_240x332mm |
|
^ See Notes | JapanYou4Envelope |
jpn_you4_105x235mm |
|
JISB4 |
jis_b4_257x364mm |
||
JISB5 |
jis_b5_182x257mm |
||
MetricPhoto-L |
om_dsc-photo_89x119mm |
||
NorthAmerica3x5 |
na_index-3x5_3x5in |
||
NorthAmerica4x6 |
na_index-4x6_4x6in |
||
NorthAmerica4x6Postcard |
na_index-4x6_4x6in |
||
NorthAmerica5x7 |
na_5x7_5x7in |
||
NorthAmerica5x8 |
na_index-5x8_5x8in |
||
NorthAmerica8x10 |
na_govt-letter_8x10in |
||
NorthAmerica11x17 |
na_ledger_11x17in |
||
NorthAmericaExecutive |
na_executive_7.25x10.5in |
||
NorthAmericaLegal |
na_legal_8.5x14in |
||
NorthAmericaLetter |
na_letter_8.5x11in |
||
^ See Notes | NorthAmericaMonarchEnvelope |
na_monarch_3.875x7.5in |
|
^ See Notes | NorthAmericaNumber10Envelope |
na_number-10_4.125x9.5in |
|
^ See Notes | NorthAmericaNumber9Envelope |
na_number-9_3.875x8.875in |
|
NorthAmericaStatement |
na_invoice_5.5x8.5in |
||
NorthAmericaTabloid |
na_ledger_11x17in |
||
MediaSizeWidth |
media-col entry : media-size ->x-dimension |
||
MediaSizeHeight |
media-col entry : media-size ->y-dimension |
||
BorderlessImageableSize |
media-col-entry : media-*-margin (calculate)* indicates top, bottom, left, right |
||
PortraitImageableSize |
media-col-entry : media-*-margin (calculate) * indicates top, bottom, left, right (Used only if BorderlessImageableSize element could not be found) |
||
PageMediaType |
media-type-supported media-col-database media-col-default |
Auto |
auto |
AutoSelect |
auto |
||
Color |
stationery-colored |
||
Colored |
stationery-colored |
||
Envelope |
envelope |
||
EnvelopePlain |
envelope |
||
Heavy |
stationery-heavyweight |
||
HeavyweightPaper |
stationery-heavyweight |
||
Label |
labels |
||
Labels |
labels |
||
Letterhead |
stationery-letterhead |
||
Light |
stationery-lightweight |
||
LightweightPaper |
stationery-lightweight |
||
LxkColorPaper |
stationery-colored |
||
LxkHeavy |
stationery-heavyweight |
||
LxkLight |
stationery-Lightweight |
||
MediaAutoSelect |
auto |
||
Photographic |
photographic |
||
PhotographicGlossy |
photographic-glossy |
||
PhotographicHighGloss |
photographic-high-gloss |
||
PhotographicSemiGloss |
Photographic-semi-gloss |
||
Plain |
stationery |
||
Thick |
stationery-heavyweight |
||
Thin |
stationery-lightweight |
||
Transparency |
transparency |
||
stationery-letterhead |
stationery-letterhead |
||
stationery-lightweight |
stationery-lightweight |
||
DocumentNUp JobNUpAllDocumentsContiguously |
number-up-supported number-up-default |
Psk:PagesPerSheet |
Iterate through all PDC PagesPerSheet elements, add them to the set of supported values. Use the default element for number-up-default . |
DocumentCollate |
multiple-document-handling-supported multiple-document-handling-default Note: Universal Print currently does not support multiple document jobs |
psk:Collated |
separate-documents-collated-copies |
Psk:Uncollated |
separate-documents-uncollated-copies |
||
JobInputBin |
media-source-supported media-col-database media-col-default |
Alternate |
alternate |
AlternateRoll |
alternate-roll |
||
Auto |
auto |
||
AutoSelect |
auto |
||
autoselect |
auto |
||
Bottom |
bottom |
||
ByPassTray |
by-pass-tray |
||
Bypass-Tray |
by-pass-tray |
||
Cassette |
tray-1 |
||
Center |
center |
||
Disc |
disc |
||
Envelope |
envelope |
||
EnvFeed |
envelope |
||
Hagaki |
hagaki |
||
LargeCapacity |
large-capacity |
||
Lct |
large-capacity |
||
Left |
left |
||
LxkTray1 |
tray-1 |
||
Main |
main |
||
MainRoll |
main-roll |
||
Manual |
manual |
||
ManualFeed |
manual |
||
Middle |
middle |
||
Photo |
photo |
||
Rear |
rear |
||
Right |
right |
||
Side |
side |
||
Top |
top |
||
DRAWER* (* indicates numbers 1 through 4) |
tray-* |
||
Roll* (* indicates numbers 1 through 10) |
roll-* |
||
Roll-* (* indicates numbers 1 through 10) |
roll-* |
||
Tray* (* indicates numbers 1 through 20) |
tray-* |
||
Tray-* (* indicates numbers 1 through 20) |
tray-* |
||
Cassette* (* indicates numbers 1 through 20) |
tray-* |
||
Cassette-* (* indicates numbers 1 through 20) |
tray-* |
||
psk:FeedDirection (under each JobInputBin element) |
media-source-feed-direction (in media-source-properties of media-col entries) |
||
psk:ShortEdgeFirst |
short-edge-first (Use short-edge-first if FeedDirection element not found) |
||
psk:LongEdgeFirst |
long-edge-first |
||
JobOutputBin |
output-bin-supported output-bin-default |
Auto |
auto |
Bottom |
bottom |
||
BottomBin |
bottom |
||
Center |
center |
||
CenterBin |
center |
||
DestBulkTray |
large-capacity |
||
DestBulkTrayFU |
stacker-1 |
||
DestMailbox |
my-mailbox |
||
DestPrinterDefault |
auto |
||
DestSideTray |
side |
||
DestTopTray |
top |
||
FaceDown |
face-down |
||
Face-Down |
face-down |
||
FaceUp |
face-up |
||
Face-Up |
face-up |
||
LargeCapacity |
large-capacity |
||
Large-Capacity |
large-capacity |
||
LargeStacker |
stacker-1 |
||
LargeStacker2 |
stacker-2 |
||
Left |
left |
||
LeftBin |
left |
||
LeftTray |
left |
||
Middle |
middle |
||
MiddleBin |
middle |
||
MyMailbox |
my-mailbox |
||
My-Mailbox |
my-mailbox |
||
PrinterDefault |
auto |
||
Rear |
rear |
||
RearBin |
rear |
||
Right |
right |
||
RightBin |
right |
||
Side |
side |
||
SideBin |
side |
||
Stacker |
stacker-1 |
||
Top |
top |
||
TopBin |
top |
||
UpperTray |
top |
||
MailBoxBin* (* indicates numbers 1 through 9) |
mailbox-* |
||
OutputBin* (* indicates numbers 1 through 10) |
tray-* |
||
Tray* (* indicates numbers 1 through 20) |
tray-* |
||
Tray-* (* indicates numbers 1 through 20) |
tray-* |
||
Stacker* (* indicates numbers 1 through 10) |
stacker-* |
||
Stacker-* (* indicates numbers 1 through 10) |
stacker-* |
||
Mailbox* (* indicates numbers 1 through 25) |
mailbox-* |
||
Mailbox-* (* indicates numbers 1 through 25) |
mailbox-* |
||
PageResolution |
printer-resolution-supported printer-resolution-default |
ResolutionX |
X value of printer-resolution value |
ResolutionY |
Y value of printer-resolution value |
||
JobNUpPresentationDirection |
presentation-direction-number-up-supported presentation-direction-number-up-default |
psf:RightBottom |
to-right-to-bottom |
psk:BottomRight |
to-bottom-to-right |
||
psk:LeftBottom |
to-left-to-bottom |
||
psk:BottomLeft |
to-bottom-to-left |
||
psk:RightTop |
to-right-to-top |
||
psk:TopRight |
to-top-to-right |
||
psk:LeftTop |
to-left-to-top |
||
psk:TopLeft |
to-top-to-left |
||
DocumentStaple JobStapleAllDocuments DocumentHolePunch JobHolePunch DocumentBinding JobBindAllDocuments |
finishings-supported finishings-default |
_1diagonal |
4 |
_1diagonalmax15 |
4 |
||
_1diagonalRight |
22 |
||
_1diagonalZT |
4 |
||
_1left |
20 |
||
_1parallel |
4 |
||
_1PLB_CN |
21 |
||
_1PLU_CN |
20 |
||
_1PRU_CN |
22 |
||
_1Right |
22 |
||
_1rightAngled |
22 |
||
_1Staple_PC |
4 |
||
_1StapleLeftLEPort_SH |
20 |
||
_1StapleRight_PC |
22 |
||
_1StapleRightREPort_SH |
22 |
||
_23PunchBottom |
77 |
||
_23PunchLeft |
74 |
||
_23PunchRight |
76 |
||
_23PunchTop |
75 |
||
_24PunchBottom |
77 |
||
_24PunchLeft |
74 |
||
_24PunchRight |
76 |
||
_24PunchTop |
75 |
||
_2leftCM8060 |
28 |
||
_2OnAbv |
93 |
||
_2OnRev |
93 |
||
_2parallel |
28 |
||
_2PB |
74 |
||
_2PBTOP |
75 |
||
_2PL |
74 |
||
_2PL_CN |
28 |
||
_2PLLandscape |
75 |
||
_2PU |
75 |
||
_2PU_CN |
29 |
||
_2PULEFT |
74 |
||
_2Right |
30 |
||
_2StaplesBottom_PC |
31 |
||
_2StaplesLeft_PC |
28 |
||
_2StaplesLeftLEPort_SH |
28 |
||
_2StaplesRight_PC |
30 |
||
_2StaplesRightREPort_SH |
30 |
||
_2StaplesTop_PC |
29 |
||
_2StaplesTopSEPort_SH |
29 |
||
_2topCM8060 |
29 |
||
_3OnBack |
100 |
||
_3OnFront |
100 |
||
_3PunchBottom |
81 |
||
_3PunchLeft |
78 |
||
_3PunchRight |
80 |
||
_3PunchTop |
79 |
||
_4OnObvIn |
97 |
||
_4OnObvOut |
97 |
||
_4OnRevIn |
97 |
||
_4OnRevOut |
97 |
||
_4PB |
82 |
||
_4PBTOP |
83 |
||
_4PL |
82 |
||
_4PLLandscape |
83 |
||
_4PU |
83 |
||
_4PULEFT |
82 |
||
_4PunchBottom |
85 |
||
_4PunchLeft |
82 |
||
_4PunchRight |
84 |
||
_4PunchTop |
83 |
||
Bale |
12 |
||
Bind |
7 |
||
BindBottom |
53 |
||
BindLeft |
50 |
||
BindRight |
52 |
||
BindTop |
51 |
||
COnDownL |
96 |
||
COnDownR |
96 |
||
COnUpL |
96 |
||
COnUpR |
96 |
||
EdgeStitch |
9 |
||
EdgeStitchBottom |
27 |
||
EdgeStitchLeft |
24 |
||
EdgeStitchRight |
26 |
||
EdgeStitchTop |
25 |
||
Fold |
10 |
||
FoldEngineeringZ |
101 |
||
FoldHalf |
93 |
||
FoldLetter |
96 |
||
FoldParallel |
97 |
||
FoldZ |
100 |
||
FourHolesBottom_PC |
85 |
||
FourHolesBottomSwd_PC |
85 |
||
FourHolesLeft_PC |
82 |
||
FourHolesLeftSwd_PC |
82 |
||
FourHolesRight_PC |
84 |
||
FourHolesRightSwd_PC |
84 |
||
FourHolesTop_PC |
83 |
||
FourHolesTopSwd_PC |
83 |
||
HolePunch |
5 |
||
HolePunchDualBottom |
77 |
||
HolePunchDualLeft |
74 |
||
HolePunchDualRight |
76 |
||
HolePunchDualTop |
75 |
||
HolePunchMultipleBottom |
89 |
||
HolePunchMultipleLeft |
86 |
||
HolePunchMultipleRight |
88 |
||
HolePunchMultipleTop |
87 |
||
HolePunchQuadBottom |
85 |
||
HolePunchQuadLeft |
82 |
||
HolePunchQuadRight |
84 |
||
HolePunchQuadTop |
83 |
||
HolePunchTripleBottom |
81 |
||
HolePunchTripleLeft |
78 |
||
HolePunchTripleRight |
80 |
||
HolePunchTripleTop |
79 |
||
InAnyPB |
74 |
||
InAnyPL |
78 |
||
InAnyPLLandscape |
79 |
||
InAnyPU |
79 |
||
JogOffset |
14 |
||
Longside_Left_or_Top |
50 |
||
Longside_Right_or_Bottom |
52 |
||
SaddleStitch |
8 |
||
Shortside_Left_or_Top |
51 |
||
Shortside_Right_or_Bottom |
53 |
||
Staple |
4 |
||
StapleBottomLeft |
21 |
||
StapleBottomRight |
23 |
||
StapleDualBottom |
31 |
||
StapleDualLeft |
28 |
||
StapleDualRight |
30 |
||
StapleDualTop |
29 |
||
StapleTopLeft |
20 |
||
StapleTopRight |
22 |
||
ThreeHolesBottom_PC |
81 |
||
ThreeHolesLeft_PC |
78 |
||
ThreeHolesRight_PC |
80 |
||
ThreeHolesTop_PC |
79 |
||
Trim |
11 |
||
TwoHolesBottom_PC |
77 |
||
TwoHolesLeft_PC |
74 |
||
TwoHolesRight_PC |
76 |
||
TwoHolesTop_PC |
75 |
||
ZOnL |
101 |
||
ZOnR |
101 |
||
Bottom |
89 |
||
BottomEdge |
89 |
||
InAnyPBLEFT |
86 |
||
InAnyPULEFT |
86 |
||
InAnyPUTOP |
87 |
||
Left |
86 |
||
LeftEdge |
86 |
||
Right |
88 |
||
RightEdge |
88 |
||
Top |
87 |
||
TopEdge |
87 |
||
PageOutputQuality |
print-quality-supported print-quality-default |
psk:Draft |
3 |
psk:Normal |
4 |
||
psk:High |
5 |
NOTES:
- If an option is marked as default in the PDC, it will be used as the value for the *-default IPP attribute.
- To generate the
media-col-database
, Universal Print adds all the possible combinations of media sizes, media types and media sources. - To generate
media-col-default
, Universal Print picks the combination that uses the default size, type and source. - Universal Print may also add attributes that could not be translated from PDC but are mandatory as per Mopria's IPP specification (version 2.0).
- Media sizes marked with ^ are envelope sizes that were recently added to the Windows OS. They will not yet appear on existing versions of Windows.
Diagnosing missing printer options
These steps can be used to diagnose why some options are not showing up for the Universal Print printer registered via Universal Print connector.
- On the Universal Print connector that has the corresponding printer registered, launch the connector app.
- Login and select the printer that is being investigated.
- Click on the “Collect Diagnostics” button. This will collect the diagnostic information and launch File Explorer with an archived file corresponding to the printer’s name. Open the file to access the following files:
- LocalPcPt.xml or LocalPdc.xml: This is the PDC or PC/PT that Universal Print picked up for the printer.
- ServiceAttributes.txt: This file contains the IPP Printer Description Attributes that were successfully generated from the PDC.
- ServicePdc.xml: This is the PDC that is generated from the IPP Printer Description Attributes in ServiceAttributes.txt.
- Compare the LocalPcPt/LocalPdc.xml with either the ServiceAttributes.txt or ServicePdc.xml to determine which capabilities were either converted or dropped.
- If capabilities are being dropped, see Printer options are not available or selected printer options are not reflected in printed output.