Skip to content

IPP Print Quality Discussion

Smith Kennedy edited this page May 13, 2021 · 16 revisions

Overview

Traditional IPP uses the "print-quality (type2 enum)" Job Template attribute (STD92) to express a simple print quality intent: 3 ('draft'), 4 ('normal'), or 5 ('high').

Additional process-like Job Template attributes provide control over different aspects of the visual processing of each Document:

  • "print-color-mode (type2 keyword)": 'auto', 'auto-monochrome', 'bi-level', 'color', 'highlight', 'monochrome', 'process-bi-level', 'process-monochrome' (PWG5100.13)
  • "print-content-optimize (type2 keyword)": 'auto', 'graphic', 'photo', 'text', and 'text-and-graphic' (PWG5100.7)
  • "print-darkness (integer(-100:100))": Relative darkness of output (IPP-LABEL)
  • "print-rendering-intent (type2 keyword)": 'auto', 'absolute', 'perceptual', 'relative', 'relative-bpc', 'saturation' (PWG5100.13)
  • "print-speed (integer(1:MAX))": Printing speed in hundredths of millimeters per second (IPP-LABEL)
  • "printer-resolution (resolution)": Horizontal and vertical resolution in dots-per-inch or dots-per-centimeter (STD92)

IPP 3D replaces "printer-resolution" with "print-accuracy (collection)" with members for the X, Y, and Z accuracy in nanometers, along with other process-like attributes to control temperature, humidity, and print speed.

Some PWG members have asked for greater control/flexibility in order to provide feature parity between their traditional printer driver software and IPP. Specific features/use cases from the current NODRIVER working draft are:

  • Manufacturer-Deployed Print Quality Mode ("X-Magic")
  • Administrator-Deployed Print Quality Mode ("Eco-Draft")
  • Manufacturer-Deployed Color Transformation Preferences ("Legacy Color Compatibility Mode")
  • Administrator-Deployed Color Transformation Preference ("Blueprint Output Mode")
  • Print Quality Hints to Influence Printer Color Processing (how to find/group color/quality options)

IPP Workgroup Consensus

During the November 2020 virtual face-to-face meeting, the IPP workgroup had an extended discussion about re-thinking print quality in terms of expressing intent, and acknowledging that certain Job Template attributes used for controlling the print quality were more process-like than intent-based. The following text was proposed for NODRIVER (errata update of PWG 5100.13) explains the current workgroup consensus.

At the May 2021 F2F, the editor of NODRIVER accepted this plan to expand "job-presets-supported" with a "preset-category" member and to define a new "print-processing-attributes-supported " Printer Description attribute. The IPP Workgroup consensus was to accept this as the plan moving forward. It has been incorporated into NODRIVER as of the 2021-05-01 draft.

4.x Print Quality Presets and Processing Attributes

The IPP model focuses on intent (what is desired) and not process (how to do something). The “print-quality” Job Template attribute (STD92) specifies a simple intent that traditionally has amounted to a simple set of presets that are implicitly mapped to a particular output resolution, halftoning algorithm, and color reproduction setting. However, the simple 'draft', 'normal', and 'high' values offered by the "print-quality" attribute are sometimes not sufficient to express the range of capabilities supported by some Printers.

The “job-presets-supported” Printer Description attribute (section 6.6.8) provides a way to specify complex intent with explicit mapping to specific Job and Document Template attributes. This allows both a simplified Client user interface ("Stapled, Two-Sided Portrait Document", "Photo on Glossy Paper") as well as proper discovery and control of the individual attributes. These presets can be supplied by the vendor and/or as configured by a local administrator, and through the "preset-category (type2 keyword)" member attribute (section 6.6.8.x) a Client can identify and/or group such presets visually to assist the End User.

Ideally, Clients that support the "job-presets-supported" attribute and "preset-category" member attribute will replace any user interface controls for the legacy "print-quality" with a control to select the presets a Printer reports with the 'print-quality' category. Such a Client is thus able to support Printers that only offer the simple "print-quality" enumerated values and Printers with more complex needs with a similar user interface.

Some Job Template attributes are inherently process-like such as "media-overprint", "print-color-mode", “print-content-optimize”, "print-darkness", “print-rendering-intent”, "print-speed", and “printer-resolution”. These do not directly control Job processing but rather provide explicit control over processing variables (e.g, resource limits, bit depths, etc), algorithms (e.g, what kind of halftoning to use), and/or behaviors (e.g, over bleed for borderless printing). The new “print-process-attributes-supported” Printer Description attribute (section 6.6.x) lists the Job Template attributes that specify how some aspects of Job processing are performed. A Client supporting this attribute can visually group the user interface controls for these attributes to show the End User which controls relate to the visual processing and output of the Job - so called expert or advanced quality controls - versus those that express ordinary intent such as media size, duplex printing, and so forth.

6.6.8 job-presets-supported (1setOf collection)

6.6.8.x preset-category (type2 keyword)

This RECOMMENDED member attribute specifies the preset type. The following values are defined by this specification:

  • 'feature': A preset that selects a particular Printer feature.
  • ‘print-quality’: A preset that selects a particular print quality or visual processing mode for the Printer.
  • 'site': A preset defined by the local administrator for a site-specific activity or workflow.

Note: Because 'print-quality' presets are intended as a replacement for the "print-quality" Job Template attribute (STD92), Printers that report 'print-quality' presets MUST report a preset for each supported "print-quality" value.

6.6.8.y Examples

(rework/expand example)

job-presets-supported={
  preset-name='draft'
  preset-category='print-quality'
  print-content-optimize='text'
  printer-resolution=300dpi
},{
  preset-name='normal'
  preset-category='print-quality'
  print-content-optimize='text-and-graphic'
  printer-resolution=600dpi
},{
  preset-name='high'
  preset-category='print-quality'
  print-content-optimize='auto'
  printer-resolution=1200dpi
},{
  preset-name='photo'
  preset-category='print-quality'
  print-content-optimize='photo'
  print-rendering-intent='relative-bpc'
  printer-resolution=1200dpi
},{
 preset-name='Marketing Flyers'
 preset-category='site'
 finishings=96(fold-letter)
 media='na_legal_8.5x14in'
 orientation-requested=4(landscape)
 print-content-optimize='text-and-graphic'
 print-rendering-intent='saturation'
 printer-resolution=1200dpi
}

6.6.x print-processing-attributes-supported (1setOf keyword)

This REQUIRED attribute lists the Job and Document Template attributes that specify processing variables such as algorithms, rendering behaviors, and resource limits. Printers that support the "media-overprint" (section 6.2.x), "print-color-mode" (section 6.2.x), “print-content-optimize” (PWG5100.7), "print-darkness" (IPP-LABEL), “print-rendering-intent” (section 6.2.x), "print-speed" (IPP-LABEL), and/or “printer-resolution” (STD92) Job Template attributes MUST list the corresponding attributes in the "print-processing-attributes-supported" attribute.

Earlier Discussion

Proposals

The following options have been proposed:

  • Extend the "print-quality" enums to allow for vendor quality levels below and above the basic three values, along with custom values that may not fall on the same spectrum of print quality choices.

Issues identified: The proposed value ranges make it difficult for Clients to present understandable UI - the current values allow for a quality slider (draft to best/high) but there is no such relationship for some of the custom values.

  • Add a new "print-quality-hints-supported" (1setOf keyword) attribute that lists Job Template attributes that contribute to the print quality. Some specific guidance and restrictions were placed on the attributes that were allowed. Clients could then group print quality attributes together, including vendor extension attributes, so that the User knows which attributes (options) will affect the output quality.

Issues identified: Feedback from review of this proposal was to rename it to "print-quality-attributes-supported" and remove the restrictions.

  • Add a new "print-quality-percent" (integer(0:100)) attribute that has a clear mapping to/from the existing "print-quality" enum.

Issues identified: While this supports values below and above the current 'draft' and 'high' quality values, it does not address vendor/printer-specific quality modes that exist outside a simple spectrum or allow those values to be labeled using a vendor-provided non-numerical localized string.

  • Add a new "print-quality-col" (collection) attribute that allows for any attribute contributing to the print quality to be specified. See below for the complete proposal.

Issues identified: This proposal has not yet been fully discussed.

"print-quality" Enum Proposal

Enum Value Enum Label Description
3 draft STD92
4 normal STD92
5 high STD92
10 custom-10 Lowest custom print quality level
11 custom-11 Custom print quality level lower that 'custom-12'
12 custom-12 Custom print quality level lower that 'draft'
16 custom-16 Custom print quality level higher than 'high'
17 custom-17 Custom print quality level higher than 'custom-16'
18 custom-18 Highest custom print quality level
20 custom-20 Non-linear custom print quality
21 custom-21 Non-linear custom print quality
22 custom-22 Non-linear custom print quality

"print-quality-col" Proposal

Replace or augment "print-quality" STD92 with a new "print-quality-col" similar to the "media" / "media-col" or "finishings" / "finishings-col" design pattern.

Job Template Attributes

print-quality-col (collection)

A collection that supplies the requested print quality level.

print-quality-template (type2 keyword | name(MAX))

The name of the requested print quality level.

smixxx-yyy (syntax)

Vendor extension member attribute named in the "print-quality-attributes-supported" Printer Description attribute.

Should this (or any other member) be allowed in the Job Template attribute collection? For what purpose?

Printer Description Attributes

print-quality-col-database (1setOf collection)

Printer Description attribute that provides a list of Printer's supported "print-quality-col" collections. Each collection includes a number of members describing the particular print quality level. Each collection MUST include "print-quality-template" and "print-quality-percent". A collection MUST be provided for each enum value listed in the Printer's "print-quality-supported" Printer Description attribute STD92.

print-quality-template (type2 keyword | name(MAX))

This member provides a unique name for the "print-quality-col" collection.

print-quality-percent (integer(0:100))

This member provides a unique number indicating the relative order of this collection in the set of collections provided by "print-quality-col-database". (Or should "print-quality-col-database" just be required to contain an ordered set of collections?)

print-quality-col-supported (1setOf keyword)

This provides a list of supported that are Job Template attributes that are member attributes of "print-quality-col" collections . Examples of possibly relevant attributes:

  • printer-resolution
  • print-color-mode
  • print-content-optimize
  • print-rendering-intent
  • SMIxxxx- (limit allowable syntaxes to those that are in "print-quality-hints-supported")

Prior Member Attributes

  • "quality-percent" (integer(0:100)): RECOMMENDED relative quality level to support slider-style print quality selection. 'draft' = 25, 'normal' = 50, 'high' = 75.

  • "quality-colorants" (type2 keyword): Colorants used for printing - 'all', 'black', 'cmy', 'cmyk'?

  • "quality-color-accuracy" (type2 keyword): 'best', 'fast', 'normal'?

  • "quality-resolution" (resolution): Minimum resolution required (2D only).

  • "quality-image-sampling" (type2 keyword): 'auto', 'best', 'nearest-neighbor', 'bilinear', 'bicubic', etc.

  • "quality-dimensional-accuracy" (collection): Minimum accuracy required in nanometers (3D only).

  • "quality-strength" (integer(0:MAX)): Tensile strength in kilopascals (kPA) (3D only).

  • Other member attributes? [Smith @ HP] - vendor extensions? or an attribute listing keywords that are attribute names of vendor-unique print quality related attributes, analogous to "print-quality-hints-supported"?

Comments / Feedback

  1. [Smith @ HP] This could provide an alternative for extending the "print-quality" attribute and also provide a container to replace the proposed "print-quality-hints-supported" attribute as well.
  2. [Smith @ HP] We should consider the factors that contribute to users and operators offering different print quality levels.
    • Operators might be wanting to expose only certain quality levels to some users as a way to impose limits on the supplies those users can consume.
    • Users might be considering the "speed vs. quality" trade-off when choosing different print quality levels, if there are significant speed differences at different quality levels (resolution, half toning, etc.)
  3. [Smith @ HP] Could design this to operate as a sort of quality-specific "preset", but the intention would be that it would be presented to the user as a print job choice, which is presented differently from the more general "preset" feature. An "expansion triangle" could expose the members individually. A sophisticated Client might provide a way to save modified value sets as a site-unique "print quality level".