-
Notifications
You must be signed in to change notification settings - Fork 91
IPP Print Features
This document lists print features and how they are supported using IPP.
Sections 1–10 cover features a Client directly exposes to, or that a Client
exposes as an observable result for, an end user — a print-dialog option, a
physical output difference, or an interactive device/status action.
Section 11 covers a small set of
supporting mechanisms this document also tracks — attributes that exist to
serve administrators/fleet-management or to enforce access/transport
security in the background, with no direct, independently-chosen presence
in a typical print dialog. Protocol/negotiation mechanics that are purely
plumbing (capability discovery, DNS-SD advertisement, Validate-Job
semantics, constraint resolution, conformance signaling) are intentionally
excluded from both — they're already covered by the IPP Implementor's
Guide v2[ig] and aren't independent customer-visible features in their own right.
Each feature definition provides the following
- Description - A description of the feature
- Detection — How a Client discovers whether and to what extent a Printer supports the feature (IPP operations, attributes, values, and possibly associated resources).
- Client Preview — Whether and how a Client UI can render an accurate before-printing preview of the feature's effect.
- Job Submission / Job Ticket — The Job Template attribute(s) a Client includes in Job Creation requests to request that feature be enabled for the Job.
- Expected Result — The observable outcome at the Printer / Job level, including how it should be reflected back in Job Status or Printer Status attributes.
Each attribute name links to the specification that defines it; full citations are collected in References at the end of this document.
-
Detection:
media-supported[rfc8011] - list of media keyword names, and/ormedia-col-database[jobext] - collection entries withmedia-size,media-size-name, source/type pairing, returned byGet-Printer-Attributes. - Client Preview: Yes — canvas/page-boundary dimensions are known locally, so the client can render an accurate to-scale page preview without contacting the printer again.
-
Job Submission / Job Ticket:
media[rfc8011] (simple keyword, e.g.na_letter_8.5x11in) ormedia-col[jobext] with amedia-sizemember collection (x-dimension,y-dimension). -
Expected Result: Printer renders output on the requested sheet size;
if unsupported, printer should reject via
Validate-Jobor substitute the closest match and report the substitution injob-state-message/media-col-actual.
-
Detection:
media-size-supported[rfc8011] expressed as a range (x-dimension/y-dimensionmin-max) rather than discrete values, or acustom_min/custom_maxentry inmedia-supported. - Client Preview: Yes — same as standard sizes, since dimensions are explicit numeric values the client controls directly.
-
Job Submission / Job Ticket:
media-col[jobext] withmedia-sizeset to explicit dimensions within the advertised range. -
Expected Result: Job accepted and printed at the exact custom
dimensions; out-of-range values should cause
Validate-Job/Print-Jobto returnclient-error-attributes-or-values-not-supportedwith the offending attribute in the unsupported attributes group.
-
Detection:
media-source-supported[rfc8011] - list of tray keywords, e.g.tray-1,manual- andmedia-col-database[jobext] entries pairing source with supported media. - Client Preview: No — tray choice has no visual effect on page content; at most a UI can show a text/icon label for the selected tray.
-
Job Submission / Job Ticket:
media-source[rfc8011] ormedia-col(media-sourcemember). -
Expected Result: Printer feeds from the requested tray; if the tray is
empty or mismatched with requested media, printer transitions to
printer-state-reasons=media-neededand job entersprocessing-stopped.
-
Detection:
media-type-supported[rfc8011] - e.g.stationery,photographic,cardstock. - Client Preview: Partial — a client can only approximate the visual effect (e.g. a "glossy photo" swatch/texture hint); actual ink laydown/gloss behavior is not renderable on-screen.
-
Job Submission / Job Ticket:
media-type[rfc8011] ormedia-col(media-typemember). -
Expected Result: Printer adjusts print engine settings (heat, speed,
ink laydown) appropriate to the media type; mismatched type/tray content
may trigger
printer-state-reasons=media-type-mismatch(vendor extension) or output quality degradation with no protocol-level error.
-
Detection:
media-col-database[jobext] entries wheremedia-*-margin-supported[rfc8011] includes0, or amedia-bottom-margin/media-top-margin/media-left-margin/media-right-margin-supportedrange includes 0 for the requested size. - Client Preview: Yes — margin values are known locally, so the client can render the page with/without border guides accurately.
-
Job Submission / Job Ticket:
media-col[jobext] with all four margin members set to0. - Expected Result: Printer prints full-bleed with no white border; if the printer cannot achieve zero margin for that media/size combination, request should be rejected with unsupported-attribute error rather than silently clipped.
-
Detection:
media-*-margin-supported[rfc8011] - four separate attributes: top, bottom, left, right - each a set or range of supported values in hundredths of millimeters. - Client Preview: Yes — margin/imageable-area rectangles can be drawn directly over the page preview.
-
Job Submission / Job Ticket:
media-col[jobext] withmedia-*-marginmembers. -
Expected Result: Printer honors the requested non-printable-area
offsets; job content outside the achievable imageable area is clipped and
should be reflected via
job-state-reasons=compression-erroris not applicable here — instead vendors may report viajob-state-messageonly, since IPP has no standard "content clipped" reason.
-
Detection:
media-overprint-supported[nodriver] boolean gate, plusmedia-overprint-distance-supported[nodriver] - a range, in hundredths of millimeters - andmedia-overprint-method-supported[nodriver] - valuesnone,extend,scale. -
Client Preview: Yes — distance and method are both known locally,
so the client can render the expanded Finished Page Image relative to
the media's margins accurately (
extendreplicates edge pixel values outward;scaleenlarges the whole Impression). -
Job Submission / Job Ticket:
media-overprint[nodriver] collection withoverprint-distanceandoverprint-methodmembers. - Expected Result: Printer expands each Finished Page Image beyond the selected media size's margins by the requested distance using the requested method, so that content still reaches the physical edge of the sheet despite feed/registration tolerance. This is distinct from Borderless printing: borderless requests zero margins outright, while overprint intentionally over-extends the imprinted area past whatever margins are in effect (zero or not) to cover registration error.
-
Detection:
output-bin-supported[rfc8011] - list of bin keywords, e.g.top,rear,face-down. - Client Preview: No — affects physical output routing only, not page content.
-
Job Submission / Job Ticket:
output-bin[rfc8011]. -
Expected Result: Finished sheets are routed to the specified physical
bin; unsupported bin selection causes
client-error-attributes-or-values-not-supported.
-
Detection:
orientation-requested-supported[rfc8011] - values:portrait,landscape,reverse-landscape,reverse-portrait. - Client Preview: Yes — a straightforward local rotation of the rendered page canvas.
-
Job Submission / Job Ticket:
orientation-requested[rfc8011]. -
Expected Result: Rasterization/imaging pipeline rotates content
accordingly before marking; combined with
sidesfor duplex, printer must respect edge-binding semantics per orientation.
-
Detection:
number-up-supported[rfc8011] - set of integers, typically1,2,4,6,9,16. - Client Preview: Yes — imposition math (scale + grid placement) is fully client-computable from the source page geometry.
-
Job Submission / Job Ticket:
number-up[rfc8011]. -
Expected Result: Printer imposes N logical pages onto each physical
sheet at reduced scale; job's
job-media-sheets-completedwill be lower thanjob-impressions-completedby the N-up factor.
-
Detection:
number-up-layout-supported[jobext] - values likelrtb,tblr,rlbt, etc. - Client Preview: Yes — same imposition preview as N-up, with cell ordering following the selected layout keyword.
-
Job Submission / Job Ticket:
number-up-layout[jobext]. -
Expected Result: Logical page placement on the sheet follows the
specified reading order; only meaningful when
number-up> 1.
-
Detection:
page-ranges-supported[rfc8011] - boolean - indicates whether the printer honors range restriction at all. - Client Preview: Yes — the client can filter/highlight the excluded pages in a thumbnail strip before submission.
-
Job Submission / Job Ticket:
page-ranges[rfc8011] (set of one or morelower-upperinteger ranges). -
Expected Result: Only the specified page numbers are marked;
job-impressions-completedshould track only the printed subset, andpage-ranges-supported=falseshould cause the printer to either reject the attribute or print the full document while ignoring it (per RFC 8011 unsupported-attribute handling rules).
-
Detection:
output-bin-supported[rfc8011] entries distinguishing face-up vs. face-down bins, since IPP has no dedicated "reverse order" attribute.face-up/face-downin the bin keyword tells the Client which physical stacking behavior to expect, which in turn tells the Client whether it needs to send pages in forward or reverse order. - Client Preview: No — the effect is on physical stack order, not on-screen page content.
-
Job Submission / Job Ticket:
output-bin[rfc8011] chosen to match the desired stacking order; on a streaming printer (one that can't spool and internally reorder the whole Job), a Client targeting aface-upbin MUST itself reorder the Document's pages before transmission — last page first — since whatever page prints last ends up on top of the face-up stack and needs to be the document's first page for correct reading order. This reordering is Client-side ("driver") logic; there is no IPP attribute that requests it directly. - Expected Result: Physical sheet order in the output tray matches logical document order as viewed by the user — face-down delivery typically yields correct reading order with pages sent in the document's natural order, while face-up delivery requires the Client to have sent pages in reverse order for the same result.
-
Detection:
print-scaling-supported[jobext] - values:auto,auto-fit,fill,fit,none. - Client Preview: Yes — the scaling transform against the chosen media size is directly renderable locally.
-
Job Submission / Job Ticket:
print-scaling[jobext]. -
Expected Result: Document content is scaled to the target media
dimensions per the selected mode;
nonerequires content already sized to the media or it will clip.
-
Detection:
cover-back-supported/cover-front-supported[ppx] - collections describing available cover media/source - pluscover-sheet-info-supported[ppx]. - Client Preview: Partial — the client can show a placeholder cover sheet (blank or media swatch) in the page sequence, but not the actual pre-printed stock content, which lives on the printer side.
-
Job Submission / Job Ticket:
cover-back,cover-front[ppx] collections (each with e.g.cover-type,media-col). -
Expected Result: Printer inserts blank or pre-printed cover sheets
from the specified source before/after the document body;
job-media-sheets-completedincludes the cover sheets.
-
Detection:
sides-supported[rfc8011] - values:one-sided,two-sided-long-edge,two-sided-short-edge. - Client Preview: Yes — a "book-style" flip preview showing front/back page pairing and binding edge can be rendered entirely client-side.
-
Job Submission / Job Ticket:
sides[rfc8011]. -
Expected Result: Printer engages duplexer hardware for two-sided
values; if
sides-supportedlacks duplex values (simplex-only device), requesting duplex must fail attribute validation rather than silently print simplex.job-media-sheets-completedreflects physical sheets, which is roughly half ofjob-impressions-completedfor duplex jobs.
-
Detection:
print-color-mode-supported[nodriver] - values:auto,auto-monochrome,bi-level,color,highlight,monochrome,process-bi-level,process-monochrome. - Client Preview: Yes — a grayscale/bi-level render of the source content is a reasonable local approximation, though exact printer halftoning/dither will differ from the on-screen simulation.
-
Job Submission / Job Ticket:
print-color-mode[nodriver]. -
Expected Result: Marking engine uses full-color or black-only
toner/ink path accordingly; job accounting attributes
(
job-accounting-sheetsvariants) may distinguish color vs. mono page counts for billing.
-
Detection:
print-color-mode-supported[nodriver] MAY list unregistered (vendor- or site-defined) keywords in addition to the standard set, e.g. a manufacturer's proprietary "legacy color compatibility" mode or an administrator-deployed "blueprint output" mode; when it does, the Printer SHOULD also exposeprint-color-mode-icc-profiles[nodriver] - a collection listing a preview ICC profile (profile-urimember) for each suchprint-color-modevalue - plus localized labels and tooltip help via theprinter-strings-uri[nodriver] message catalog. -
Client Preview: Yes, for custom modes with a profile advertised — the
client downloads the referenced ICC profile and can soft-proof the
color transformation before submission; this profile is for preview
only and is distinct from the profiles in
printer-icc-profiles[nodriver], which support print-time color management. -
Job Submission / Job Ticket:
print-color-mode[nodriver] set to the selected (possibly vendor-defined) keyword. -
Expected Result: Printer performs the color transformation
associated with that custom mode; each collection in
print-color-mode-icc-profilesMUST reference a uniqueprint-color-modevalue, so the client can look up the matching preview profile for whatever keyword the End User selects. A Client can also confirm this ahead of submission viaValidate-Job: if the Printer supportsprinter-icc-profiles[nodriver], it MUST returnprofile-uri-actual[nodriver] in the response, naming exactly which ICC profile it will actually use for the submitted Job Template attributes — removing any guesswork about which profile among several candidates applies to this specific ticket.
-
Detection:
print-quality-supported[rfc8011] - values:draft,normal,high. - Client Preview: No — the perceptible difference comes from printer-side halftoning/pass count, which the client has no data to simulate accurately.
-
Job Submission / Job Ticket:
print-quality[rfc8011]. - Expected Result: Trade-off between speed and fidelity is applied (dither pattern, pass count); no separate status attribute confirms quality applied — verified only by visual/measured output.
-
Detection:
job-presets-supported[nodriver] entries carryingpreset-category[nodriver] =print-quality. NODRIVER §4.9 introduces this specifically because the legacyprint-quality[rfc8011] enum (draft/normal/high) "is not easily extensible": a Printer can advertise any number of named, quality-category Presets instead — e.g. a manufacturer's proprietary "X Magic" mode, or an administrator-deployed "Eco-Draft" mode with reduced toner usage for billing purposes.print-processing-attributes-supported[nodriver] separately lists which underlying Job/Document Template attributes (e.g.print-content-optimize,print-darkness,printer-resolution) a quality Preset may bundle, so a Client can group them coherently in its own UI. -
Client Preview: Partial — same as Presets generally: individual
bundled attribute values can be previewed wherever the underlying
attribute supports it (e.g.
printer-resolution), but there's no dedicated rendering of "quality" itself beyond that. -
Job Submission / Job Ticket: Same mechanism as
Presets — the Client copies the
selected quality Preset's Job Template attributes into the ticket; the
legacy
print-qualityattribute remains valid and continues to work in parallel for Clients that only implement the fixed 3-value enum. -
Expected Result: If a Printer offers any
print-quality-category Presets, it MUST offer one for every value inprint-quality-supported, so the extensible mechanism is strictly additive rather than a replacement with coverage gaps; the Printer then applies the bundled settings exactly as it would for an equivalent hand-built ticket. This lets a Printer expose quality levels that don't map onto draft/normal/high (e.g. "Eco-Draft", "Photo Best") without a Client needing a driver that already knows about them.
-
Detection:
printer-resolution-supported[rfc8011] - set of resolution collections: cross-feed/feed direction values + units. - Client Preview: No — screen DPI and print DPI are decoupled; a client cannot meaningfully show "this is what 600 vs 1200 dpi looks like" without printer-accurate rasterization.
-
Job Submission / Job Ticket:
printer-resolution[rfc8011]. - Expected Result: Rasterization occurs at the requested DPI; if the requested resolution is not in the supported set, printer should reject or clamp to nearest supported value and report actual value used only if the vendor implements job-actual attributes (non-standard).
-
Detection:
print-rendering-intent-supported[nodriver] - values likeabsolute,auto,perceptual,relative- gated behind Printer support forprinter-icc-profiles. - Client Preview: Partial — a client with the printer's ICC profile and a color-managed rendering pipeline can soft-proof the intent reasonably well; without the profile, only a generic approximation is possible.
-
Job Submission / Job Ticket:
print-rendering-intent[nodriver]. - Expected Result: Color management engine applies the specified ICC rendering intent during color conversion; primarily affects photographic content with out-of-gamut colors.
-
Detection:
finishings-supported[rfc8011] including staple value keywords - e.g.staple-top-left,staple-dual-left- orfinishings-col-database[fin] for combined finishing capability sets. - Client Preview: Partial — a client can overlay a staple/staple-count icon at the correct corner/edge of the page thumbnail as a schematic indicator, but cannot render the physical staple itself.
-
Job Submission / Job Ticket:
finishings[rfc8011] (set of keyword values) orfinishings-col[fin]. -
Expected Result: Finisher unit staples output at the specified
position/count; unsupported staple position on a document exceeding
finisher sheet-count capacity should cause
client-error-attributes-or-values-not-supportedatValidate-Jobtime, not a silent skip.
-
Detection:
finishings-supported[rfc8011] punch keywords - e.g.punch-top-left,punch-dual-left- often paired withfinishings-col-database[fin] entries scoped to specific media sizes. - Client Preview: Partial — same as stapling, a schematic hole-position overlay is feasible; exact physical placement is printer-defined.
-
Job Submission / Job Ticket:
finishings/finishings-col[fin]. - Expected Result: Holes are punched at positions matching regional standard (2-hole/4-hole per locale); combination with incompatible media size should be rejected.
-
Detection:
finishings-supportedfold keywords, plusfolding-direction-supportedandfolding-offset-supported[fin] for fine control. - Client Preview: Partial — a schematic fold-line overlay (diagram style) is achievable; a true physical fold simulation is not.
-
Job Submission / Job Ticket:
finishings(fold values) orfinishings-col[fin] withfolding-direction,folding-offsetmembers. - Expected Result: Sheets exit pre-folded (half-fold, tri-fold, etc.); offset/direction attributes only apply meaningfully when the base fold finishing is also selected.
-
Detection:
finishings-supportedtrim keywords,trimming-reference-edge-supported,trimming-offset-supported,trimming-type-supported[fin]. - Client Preview: Partial — a client can draw the trim line/offset on the page preview as a guide overlay.
-
Job Submission / Job Ticket:
finishings-col[fin] withtrimming-reference-edge,trimming-offset,trimming-typemembers. - Expected Result: Output edges are cut per spec; typically used with booklet/saddle-stitch jobs to square the final edge.
-
Detection:
finishings-supportedbind/saddle-stitch keywords, or a bundledfinishing-template-supported[fin] entry - e.g.booklet-maker. - Client Preview: Yes for imposition (page reorder/rotate math is client-computable, same as N-up), partial for the physical fold/staple/trim result, which can only be shown schematically.
-
Job Submission / Job Ticket:
finishingsorfinishing-template[fin] (single keyword invoking a pre-defined bundle of imposition + fold + staple settings). -
Expected Result: Printer automatically applies correct page
imposition (reordering/rotation) in addition to physical
fold/staple/trim; client should NOT also set
number-up/page-rangesmanually when using a booklet finishing template, as behavior is undefined if they conflict.
-
Detection:
finishing-template-supported[fin] - list of named finishing bundles. Note this is a FIN-specific mechanism scoped tofinishings-colsettings only; it is distinct from the general-purpose, any-attribute Presets mechanism (see Presets below). -
Client Preview: No, in general — since the template's expanded
attribute set is printer-defined and not disclosed to the client ahead
of
Get-Printer-Attributesdescribing it in detail, preview fidelity depends entirely on how much the client already knows about that named template. -
Job Submission / Job Ticket:
finishing-template[fin]. -
Expected Result: Single attribute expands to a printer-defined
combination of
finishings-colsettings; simplifies client logic at the cost of fine-grained control.
-
Detection:
copies-supported[rfc8011] - range, e.g.1-99. - Client Preview: No content-level preview needed beyond showing the requested count as text (the pages themselves are unchanged).
-
Job Submission / Job Ticket:
copies[rfc8011]. -
Expected Result: Printer produces the requested count of the full
document;
job-impressions-completedaccumulates across all copies, andjob-media-sheets-completedscales with copies × sheets-per-set.
-
Detection:
sheet-collate-supported[rfc8011] - values:collated,uncollated- sometimes replaced/augmented bymultiple-document-handling-supported[rfc8011] for multi-document jobs. - Client Preview: Partial — a schematic "stack order" diagram (set-by-set vs. page-by-page) can illustrate the concept, though it is not a rendering of actual page content.
-
Job Submission / Job Ticket:
sheet-collateormultiple-document-handling[rfc8011]. - Expected Result: For copies > 1, output is either grouped as complete sets (collated) or grouped by page number across sets (uncollated); mismatch between requested collation and finisher capability (e.g. stapling requires collated) should fail validation.
-
Detection:
job-priority-supported[rfc8011] - range, typically1-100. - Client Preview: No — has no visual/page-level manifestation.
-
Job Submission / Job Ticket:
job-priority[rfc8011]. -
Expected Result: Scheduler orders pending jobs in the queue by
priority value (higher = sooner); observable via relative ordering in
Get-Jobsresults, not a direct status attribute.
-
Detection:
job-hold-until-supported[rfc8011] - keyword set, e.g.indefinite,day-time,evening,no-hold, or supports arbitrary date-time values. - Client Preview: No — a scheduling/queue-state feature, not a page-rendering one.
-
Job Submission / Job Ticket:
job-hold-until[rfc8011] (keyword or date-time). -
Expected Result: Job enters
job-state=pending-heldwithjob-state-reasons=job-hold-until-specified, then transitions topending/processingat the resolved time or upon explicitRelease-Job.
-
Detection:
job-error-action-supported[nodriver] - keyword set:abort-job,cancel-job,continue-job,suspend-job- andjob-error-action-default[nodriver] for the value used if the Client omits the attribute. - Client Preview: No — a queue/processing policy with no visual manifestation.
-
Job Submission / Job Ticket:
job-error-action[nodriver]. -
Expected Result: When the Printer hits a Job or Document
processing error (e.g. missing resource, out-of-memory), it takes the
requested action:
abort-jobstops and moves the Job toaborted(job-state-reasonsincludesaborted-by-system);cancel-jobstops as if aCancel-Jobrequest had been received (job-canceled-by-user);continue-jobskips to the next Document or completes the Job if it was the last one;suspend-jobstops and moves the Job toprocessing-stoppedas ifSuspend-Current-Jobhad been received (job-suspended-by-user).
-
Detection:
job-presets-supported[nodriver] - collection listing the Printer's named Presets. Each collection carries a REQUIREDpreset-namemember, a RECOMMENDEDpreset-categorymember (feature,print-quality, orsite), and one or more Job Template attributes and values the Preset applies. Unlike Finishing templates, a Preset can bundle any Job Template attributes, not justfinishings-colsettings. - Client Preview: Partial — the client can preview the individual Job Template attribute values contained in the Preset using whatever preview support exists for each underlying attribute (media, sides, print-quality, etc.); there is no dedicated preview for the Preset as a whole.
- Job Submission / Job Ticket: No dedicated submission attribute — the Client copies all Job Template attributes and values from the selected Preset directly into the Job Ticket (including member attributes the Client doesn't natively support) before submission.
-
Expected Result: Printer processes the resulting Job Ticket exactly
as it would an equivalent hand-built one; the copied attribute values
MUST NOT conflict with one another per
job-constraints-supported, and a Printer supporting a 'print-quality' Preset category MUST provide one such Preset for each value inprint-quality-supported. See Extensible print quality for that category's specific role as a replacement for the non-extensible legacyprint-qualityenum.
-
Detection:
job-sheets-supported[rfc8011] - keywords likenone,standard,first-page- orjob-sheets-col-supported[ppx] for richer bundle (media, info fields). - Client Preview: Partial — a client can show a generic banner-page placeholder in the page sequence, but the actual printer-generated content (job/user metadata layout) is not known client-side.
-
Job Submission / Job Ticket:
job-sheets[rfc8011] orjob-sheets-col[ppx]. -
Expected Result: A banner/separator page identifying the job/user is
printed at the start (and/or end) of output; counted separately from
document content in
job-media-sheets-completedif the printer implements the distinction.
-
Detection:
separator-sheets-supportedboolean plusseparator-sheets-type-supported[ppx] - values:none,slip-sheets,start-sheet,end-sheet,both-sheets. - Client Preview: Yes for placement (client knows document boundaries and can insert placeholder sheets at the right points in a thumbnail strip); the sheet's own content (if marked) is printer-defined.
-
Job Submission / Job Ticket:
separator-sheets[ppx] collection withseparator-sheets-typemember. - Expected Result: For multi-document jobs, blank/marked separator sheets are inserted between constituent documents in the output stack.
-
Detection:
job-password-supported[epx] - Printer Description attribute indicating support - andjob-password-encryption-supported[epx]- Printer Description attribute listing supported hash schemes, e.g.
none.
- Printer Description attribute listing supported hash schemes, e.g.
- Client Preview: N/A — security/workflow feature with no visual page impact.
-
Job Submission / Job Ticket:
job-password[epx] operation attribute (encoded per thejob-password-encryption[epx] operation attribute), supplied on a Job Creation operation orValidate-Job. -
Expected Result: Job is accepted and spooled but held
(
job-state-reasons=job-password-waitin some implementations) until the correct PIN is entered at the device UI/panel, at which point processing proceeds.
-
Detection:
job-release-supported[epx] - Printer Description attribute listing thejob-passwordrelease method. Legacy PIN Printing is now a sub-case of this larger feature framework. - Client Preview: N/A — security/workflow feature with no visual page impact.
-
Job Submission / Job Ticket:
job-password[epx] operation attribute (encoded per thejob-password-encryption[epx] operation attribute), supplied on a Job Creation operation orValidate-Job. -
Expected Result: Job is accepted and spooled but held
(
job-state-reasons=job-password-waitin some implementations) until the correct PIN is entered at the device UI/panel, at which point processing proceeds.
- Detection: TBD (Printer Description attribute needed to indicate that the Printer is an Infrastructure Printer).
- Client Preview: N/A — security/workflow feature with no visual page impact.
-
Job Submission / Job Ticket:
job-password[epx] operation attribute (encoded per thejob-password-encryption[epx] operation attribute), supplied on a Job Creation operation orValidate-Job. -
Expected Result: Job is accepted and spooled but held
(
job-state-reasons=job-password-waitin some implementations) until the correct PIN is entered at the device UI/panel, at which point processing proceeds.
-
Detection:
document-password-supported[nodriver] - integer giving the maximum accepted password length; REQUIRED if the Printer listsapplication/pdfindocument-format-supported. Distinct from thejob-password[epx] release-printing PIN above: this password unlocks the submitted document's own content-level protection (e.g. an encrypted PDF), not the Printer's release queue. - Client Preview: N/A — a Client's own document renderer may show a preview once it has the password locally, but there is no IPP-level preview mechanism for a locked document's contents.
-
Job Submission / Job Ticket:
document-password[nodriver] operation attribute (unencrypted passphrase, OAuth token, or similar) supplied withPrint-Job,Print-URI,Send-Document, orSend-URI; Client and Printer MUST negotiate TLS before this attribute is sent or accepted. -
Expected Result: Printer uses the supplied value to unlock the
protected document before processing. A missing or incorrect password
returns
client-error-document-password-error[nodriver] (0x418) and addsdocument-password-errortojob-state-reasons/document-state-reasons[nodriver]; a password that unlocks the document but doesn't grant print permission returnsclient-error-document-permission-error[nodriver] (0x419) with reason keyworddocument-permission-error. Detected embedded security issues (virus, trojan, other malicious content) returnclient-error-document-security-error[nodriver] (0x41A) with reasondocument-security-error, and unprintable content (file size, format version, complexity) returnsclient-error-document-unprintable-error[nodriver] (0x41B) with reasondocument-unprintable-error; for these last two, implementation or site policy decides whether the Printer aborts the whole Job or prints the unaffected Documents and marks the Jobcompleted-with-errors.
-
Detection:
job-account-id-supported,job-account-type-supported,job-accounting-user-id-supported[jobext] - booleans indicating the Printer will record/enforce these. This is the informal Job-to-account/user association mechanism only — distinct from the broader "Job Accounting" question of what happens to that data once recorded (see note below). - Client Preview: No — metadata-only feature, though a client can usefully show an estimated cost/page-count summary derived from other already-previewable attributes (copies, sides, color mode).
-
Job Submission / Job Ticket:
job-account-id,job-account-type,job-accounting-user-id[jobext]. -
Expected Result: Printer associates the job with the supplied
account/type/user (e.g. a cost-center code typed at the device or
print dialog) for reporting/billing; may reject the job with
client-error-not-authorizedif the account is invalid/over quota (implementation-specific, not standardized in core IPP). -
Note — gap: Beyond this association, IPP's actual "Job Accounting"
story (the Job Description attributes —
job-accounting-sheets[jobext] and similar — that a Printer creates/maintains for a completed Job, and for how long) is thinner than the feature name suggests. There's no attribute we're aware of governing how long a Printer must retain a Job's accounting data before it becomes unretrievable, and no attribute reporting per-colorant quantity consumed by a Job (only page/sheet counts) — both look like real gaps worth raising with PWG rather than documented, testable behavior today.
-
Detection: N/A (baseline) — read via
Get-Printer-Attributes:printer-state(values:idle,processing,stopped) andprinter-state-reasons[rfc8011] - e.g.media-jam,toner-low,door-open. - Client Preview: N/A — status display, not an output preview.
- Job Submission / Job Ticket: N/A — read-only.
- Expected Result: State reflects real-time device condition; clients should poll or subscribe rather than assume state is static across a session.
-
Detection:
printer-supply-supportedboolean gate; actual values inprinter-supply(collection per consumable: type, level, unit),printer-supply-description[epx]. - Client Preview: N/A — status display only.
- Job Submission / Job Ticket: N/A — read-only.
-
Expected Result: Level values update periodically; low/empty
conditions typically also surface via corresponding
printer-state-reasons(e.g.marker-supply-low,marker-supply-empty).
-
Detection:
printer-input-tray[nodriver] /printer-output-tray[nodriver]- 1setOf structured key/value strings, one per tray, encoding
level,maxcapacity,mediafeed/mediaxfeeddimensions,name,status,type, and (where the Printer can sense it)mediacolor,medianame,mediatype,mediaweight. Cardinality matchesmedia-source-supported[jobext] - the i-th tray status corresponds to the i-th tray keyword.
- 1setOf structured key/value strings, one per tray, encoding
- Client Preview: No — status display, not an output preview.
- Job Submission / Job Ticket: N/A — read-only.
-
Expected Result: Client can show live per-tray fill level and
currently-loaded media (e.g. "Tray 2: 45% full, Letter Plain") beyond
the static capability lists in
media-source-supported/media-col-database[jobext]; a tray reported empty or jammed should also be reflected in the correspondingprinter-state-reasons.
-
Detection:
identify-actions-supported[nodriver] - keywordsdisplay,flash,sound,speak; a Printer that is a Physical Device MUST implement theIdentify-Printer[nodriver] operation. - Client Preview: N/A — a physical/audible action at the device, not a print-output preview.
-
Job Submission / Job Ticket: N/A — not a Job operation. Client
issues
Identify-Printer[nodriver] directly, optionally supplyingidentify-actions[nodriver] (a subset of the supported actions) and amessagefor thedisplay/speakactions. - Expected Result: Printer performs the requested identification — flashing lights, sounding, or displaying/speaking a message on its console — so the End User can confirm which physical device they're interacting with; the Printer MAY reject the request if it isn't from an authenticated user.
-
Detection: No
-supportedgate — always available per RFC 8011[rfc8011]; effective scope constrained byoperations-supportedincludingCancel-Job. - Client Preview: N/A — post-submission control action, not a pre-print feature.
-
Job Submission / Job Ticket:
Cancel-Job[rfc8011] operation (referencesjob-id/job-uri). -
Expected Result:
job-statetransitions tocanceled; any in-progress marking stops as soon as practical, withjob-state-reasonsincludingjob-canceled-by-userorjob-canceled-by-operator.
-
Detection: N/A (baseline operation) — client polls
Get-Job-Attributes[rfc8011]. - Client Preview: N/A — post-submission status, not a preview concern.
-
Job Submission / Job Ticket: Not a submission-time feature; read via
job-state,job-state-reasons,job-state-message,job-impressions-completed,job-media-sheets-completed[rfc8011]. -
Expected Result: Attribute values update in near-real-time as the job
progresses through
pending→processing→completed/aborted/canceled.
-
Detection:
operations-supportedincludesRestart-Job[jobext]; not universally implemented. - Client Preview: N/A — reuses the original submission's already-known preview, no new preview step involved.
-
Job Submission / Job Ticket:
Restart-Job[jobext] operation on a completed/aborted job that the printer has retained (subject tojob-hold-until/multiple-operation-time-outretention policy). -
Expected Result: A new processing pass begins using the originally
submitted document data; only viable while the printer still has the job
document retained (
job-state-reasons=processing-to-stop-pointvs. purged).
-
Detection:
operations-supportedincludesSuspend-Current-Job/Resume-Job[jobext]. - Client Preview: N/A — post-submission control action.
- Job Submission / Job Ticket: Respective operation[jobext] invoked against the active job.
-
Expected Result:
job-state=processing-stoppedwithjob-state-reasons=job-suspendedwhile suspended; resumes marking from (implementation-defined) point onResume-Job.
-
Detection:
printer-geo-location[nodriver] - ageo:URI, or theunknownout-of-band value if the location hasn't been configured. - Client Preview: N/A — a discovery/selection aid, not a print-output feature.
-
Job Submission / Job Ticket: N/A — a read-only discovery
attribute for the common case; if the Printer supports changing it,
it MUST list
printer-geo-locationinprinter-settable-attributes-supported[rfc3380], and the Client usesSet-Printer-Attributes[rfc3380] to set it — a Printer-level configuration action, not a per-job one. -
Expected Result: Client can sort, filter, or display candidate
printers by physical proximity (e.g. nearest first) before
submission; a Printer with no configured location reports
unknownrather than a misleading default.
-
Detection:
printer-kind[nodriver] - standard keywords (document,photo,label,envelope,disc,postcard,receipt,roll,large-format) or site-/vendor-defined name values - together withipp-features-supported[nodriver], which lists coarser IPP extension-feature flags (document-object,page-overrides,production,subscription-object); NODRIVER groups these two attributes together as the mechanism for a Printer to "declare support for high-level features and capabilities" that a Client can filter discovery results on. Before any IPP round trip, the same filtering can also be driven by the DNS-SD/mDNS TXT record'skindkey - a comma-separated list mirroring theprinter-kindkeyword values, advertised alongside the Printer's other discovery TXT fields[ippeve]; this specific key isn't defined in NODRIVER itself and hasn't been verified against a locally available copy of the Bonjour Printing Specification / IPP Everywhere, so treat the exact key name as indicative rather than normative. - Client Preview: N/A — a discovery/selection aid, not a print-output feature.
-
Job Submission / Job Ticket: N/A — a read-only discovery
attribute (client-settable the same way as
printer-geo-locationabove, if listed inprinter-settable-attributes-supported[rfc3380]). -
Expected Result: Client can show only printers matching the task
at hand (e.g. hide plain document printers when the End User is
printing a photo or a shipping label) without inspecting low-level
media/finishing attributes to infer capability itself; when filtering
from DNS-SD browse results alone, the Client can narrow the list
before ever issuing
Get-Printer-Attributes.
-
Detection:
printer-icons[nodriver] - REQUIRED if supported;https/httpURIs to RGBA PNG images, in 48x48, 128x128, and/or 512x512 pixel squares, depicting the physical printer. - Client Preview: N/A — a printer-selection affordance, not a print-output preview.
- Job Submission / Job Ticket: N/A.
- Expected Result: Client renders the Printer's own icon in a printer-picker UI instead of a generic placeholder; all listed images MUST share the same visual perspective, and if the Printer supplies only one image it MUST be 128x128.
These attributes exist to support administrators, fleet-management tooling, or background access/transport security — not as a directly-chosen print-dialog option or an independently observable print-time behavior. They're tracked here for completeness (and because some, like Access control or Encryption in transit, still gate whether a print attempt succeeds at all) but are lower priority for end-user functional testing than Sections 1–10.
-
Detection:
media-col-database[jobext] entries includemedia-weight-metricalongside size/type/source. - Client Preview: No — purely a physical/engine setting with no rendering surface.
-
Job Submission / Job Ticket:
media-col[jobext] (media-weight-metricmember), generally bundled withmedia-typesince weight is rarely set independently. -
Expected Result: Printer selects appropriate fuser/feed path settings;
no dedicated top-level
*-supportedattribute exists, so support is inferred frommedia-col-databaseentries only — in practice this shows up, if at all, as an admin-configured site-specific media type in a management console rather than a Client-facing control.
-
Detection:
printer-settable-attributes-supported[rfc3380] includesjob-presets-supportedas one of its values, indicating the Printer allows a Client to add or update Presets remotely viaSet-Printer-Attributes[rfc3380]; ifjob-presets-supportedis absent from this list, the Printer's Presets are read-only from the Client's perspective (e.g. manufacturer- or administrator-deployed only, per the use cases in [nodriver]). This sits between a print-dialog feature and a management/administration action, since it changes what every Client sees, not just the one making the change. - Client Preview: No — this is a management action on the Printer object itself, not a Job; any preview of the resulting Preset's effect is the same partial, per-attribute preview described under Presets.
-
Job Submission / Job Ticket: N/A — not a Job Template attribute at
all. Instead, the Client issues a
Set-Printer-Attributes[rfc3380] request supplying the complete desiredjob-presets-supportedvalue (per RFC 3380, a 1setOf attribute's supplied values replace the attribute's entire prior value, so the Client MUST include existing Presets it wants to keep alongside the new/changed one). -
Expected Result: If every supplied collection validates — the
attribute is listed in
printer-settable-attributes-supported, and none of its Job Template attribute/value combinations conflict perjob-constraints-supported[nodriver] — the Printer atomically replaces itsjob-presets-supportedvalue, and the new/updated Preset becomes visible to all Clients on their nextGet-Printer-Attributes. Otherwise the Printer MUST reject the entire request (no partial update) with the appropriate client error, e.g.client-error-attributes-not-settableifjob-presets-supportedisn't Client-settable, or a conflicting-attributes error if a supplied Preset's values are mutually exclusive.
-
Detection:
requesting-user-name-allowed/requesting-user-name-denied[rfc8011] - Printer Description ACL attributes - anduri-authentication-supported[rfc8011] - e.g.basic,digest,certificate,negotiate.requesting-user-uri-supported[nodriver] (Printers MUST supplytrue) andrequesting-user-uri-schemes-supported[nodriver] (e.g.mailto,urn) indicate the Printer also accepts a stable per-user identity URI alongside the plainrequesting-user-name. - Client Preview: N/A — access control, not a page/output feature.
-
Job Submission / Job Ticket:
requesting-user-name[rfc8011] operation attribute, authenticated per the negotiated HTTP/TLS auth scheme, optionally supplemented byrequesting-user-uri[nodriver] - a URI (e.g. aurn:UUID ormailto:address) that uniquely identifies the requesting user, sincerequesting-user-namevalues are often not unique (e.g. multiple "John Doe"s). -
Expected Result: Requests from disallowed users are rejected with
client-error-not-authorized; allowed users proceed normally. The Printer setsjob-originating-user-uri[nodriver] (ornotify-subscriber-user-uri[nodriver] for a subscription) to the most authenticated URI it can obtain from its own authentication service, falling back to the Client-suppliedrequesting-user-urionly when no authenticated URI is available.
-
Detection:
uri-security-supported[rfc8011] - values:none,tls-printer-uri-supportedlistingipps://endpoints. - Client Preview: N/A — transport-layer concern, not a print-output feature.
- Job Submission / Job Ticket: N/A — negotiated at transport layer (TLS handshake), not via a Job Template attribute.
-
Expected Result: All IPP operation traffic for the job is encrypted;
a printer requiring TLS should reject plaintext
ipp://connections at the transport level before any IPP semantics are evaluated.
-
Detection:
printer-firmware-name[nodriver] - 1setOf name, one per firmware component - gates parallel, same-cardinality arraysprinter-firmware-version[nodriver],printer-firmware-string-version[nodriver], andprinter-firmware-patches[nodriver], indexed together (the i-th value of each describes the same component). - Client Preview: N/A — device information display only, though it can reasonably share UI space with Supply levels in a printer status app or print dialog.
- Job Submission / Job Ticket: N/A — read-only.
- Expected Result: Client or administrator can display or log the exact firmware component names, versions, and applied patches for support and fleet-management purposes; has no protocol-level effect on Job processing. The forthcoming IPP Firmware Update Extensions v1.0 is expected to add the operations/attributes needed for a Client to actually check for, describe, and install new firmware — this entry covers reporting only, not that update workflow.
-
Detection:
notify-events-supported,notify-pull-method-supported,notify-schemes-supported[rfc3995]. - Client Preview: N/A — asynchronous status mechanism, not a preview concern.
-
Job Submission / Job Ticket:
Create-Printer-Subscription/Create-Job-Subscription[rfc3995] withnotify-events(e.g.job-completed,printer-state-changed) and a delivery method (notify-recipient-urior polling viaGet-Notifications). -
Expected Result: Subscribing client receives (or can poll for) event
notifications matching the requested event set until the subscription
expires (
notify-lease-duration) or is canceled. This is the transport underneath status displays like Printer status and Job status monitoring; those entries cover what the End User actually sees, this one covers how the Client gets told about it asynchronously instead of only by polling.
[rfc8011] RFC 8011, Internet Printing Protocol/1.1: Model and Semantics — https://www.rfc-editor.org/info/rfc8011/
[rfc3380] RFC 3380, Internet Printing Protocol (IPP): Job and Printer Set Operations — https://www.rfc-editor.org/info/rfc3380/
[fin] PWG 5100.1-2022, IPP Finishings 3.0 (FIN) - https://ftp.pwg.org/pub/pwg/candidates/cs-ippfinishings30-20220527-5100.1.pdf
[ppx] PWG 5100.3-2023, IPP Production Printing Extensions v2.0 (PPX) — https://ftp.pwg.org/pub/pwg/candidates/cs-ippppx20-20230131-5100.3.pdf
[docobject] PWG 5100.5-2019, IPP Document Object v1.1 (DOCOBJECT) - https://ftp.pwg.org/pub/pwg/candidates/cs-ippdocobject12-20240517-5100.5.pdf
[jobext] PWG 5100.7-2023, IPP Job Extensions v2.1 (JOBEXT) - https://ftp.pwg.org/pub/pwg/candidates/cs-ippjobext21-20230210-5100.7.pdf
[epx] PWG 5100.11-2024, IPP Enterprise Printing Extensions v2.0 (EPX) — https://ftp.pwg.org/pub/pwg/candidates/cs-ippepx20-20240315-5100.11.pdf
[nodriver] PWG 5100.13-2023, IPP Driver Replacement Extensions v2.0 (NODRIVER) - https://ftp.pwg.org/pub/pwg/candidates/cs-ippnodriver20-20230301-5100.13.pdf
[ippeve] PWG 5100.14-2020, IPP Everywhere v1.1 - https://ftp.pwg.org/pub/pwg/candidates/cs-ippeve11-20200515-5100.14.pdf
[infra] PWG 5100.18-2025, IPP Shared Infrastructure Extensions v1.1 (INFRA) - https://ftp.pwg.org/pub/pwg/candidates/cs-ippinfra11-20250502-5100.18.pdf
[ig] PWG 5100.19-2015, IPP Implementor's Guide v2.0 (IG) - https://ftp.pwg.org/pub/pwg/candidates/cs-ippig20-20150821-5100.19.pdf
[selfcert] PWG 5100.20-2020, IPP Everywhere™ Printer Self-Certification Manual v1.1 (SELFCERT) - https://ftp.pwg.org/pub/pwg/candidates/cs-ippeveselfcert11-20200515-5100.20.pdf
[rfc3995] RFC 3995, Internet Printing Protocol (IPP): Event Notifications and Subscriptions — https://www.rfc-editor.org/info/rfc3995/
The IPP Sample Software implements IPP Everywhere™, IPP 3D, and many other IPP standards and extensions.