RFC2566 - Internet Printing Protocol/1.0: Model and Semantics(4)
4.2.9 number-up (integer(1:MAX))
This attribute specifies the number of print-stream pages to impose
upon a single side of an instance of a selected medium. For example,
if the value is:
Value Description
'1' the Printer MUST place one print-stream page on a single
side of an instance of the selected medium (MAY add
some sort of translation, scaling, or rotation).
'2' the Printer MUST place two print-stream pages on a single
side of an instance of the selected medium (MAY add
some sort of translation, scaling, or rotation).
'4' the Printer MUST place four print-stream pages on a single
side of an instance of the selected medium (MAY add
some sort of translation, scaling, or rotation).
This attribute primarily controls the translation, scaling and
rotation of print-stream pages.
Note: The effect of this attribute on jobs with multiple documents is
controlled by the "multiple-document-handling" job attribute (section
4.2.4) and the relationship of this attribute and the other
attributes that control document processing is described in section
15.3.
4.2.10 orientation-requested (type2 enum)
This attribute indicates the desired orientation for printed print-
stream pages; it does not describe the orientation of the client-
supplied print-stream pages.
For some document formats (such as 'application/postscript'), the
desired orientation of the print-stream pages is specified within the
document data. This information is generated by a device driver
prior to the submission of the print job. Other document formats
(such as 'text/plain') do not include the notion of desired
orientation within the document data. In the latter case it is
possible for the Printer object to bind the desired orientation to
the document data after it has been submitted. It is expected that a
Printer object would only support "orientations-requested" for some
document formats (e.g., 'text/plain' or 'text/html') but not others
(e.g., 'application/postscript'). This is no different than any
other Job Template attribute since section 4.2, item 1, points out
that a Printer object may support or not support any Job Template
attribute based on the document format supplied by the client.
However, a special mention is made here since it is very likely that
a Printer object will support "orientation-requested" for only a
subset of the supported document formats.
Standard enum values are:
Value Symbolic Name and Description
'3' 'portrait': The content will be imaged across the short
edge of the medium.
'4' 'landscape': The content will be imaged across the long
edge of the medium. Landscape is defined to be a
rotation of the print-stream page to be imaged by +90
degrees with respect to the medium (i.e. anti-
clockwise) from the portrait orientation. Note: The
+90 direction was chosen because simple finishing on
the long edge is the same edge whether portrait or
landscape
'5' 'reverse-landscape': The content will be imaged across the
long edge of the medium. Reverse-landscape is defined
to be a rotation of the print-stream page to be imaged
by - 90 degrees with respect to the medium (i.e.
clockwise) from the portrait orientation. Note: The '
reverse-landscape' value was added because some
applications rotate landscape -90 degrees from
portrait, rather than +90 degrees.
'6' 'reverse-portrait': The content will be imaged across the
short edge of the medium. Reverse-portrait is defined
to be a rotation of the print-stream page to be imaged
by 180 degrees with respect to the medium from the
portrait orientation. Note: The 'reverse-portrait'
value was added for use with the "finishings"
attribute in cases where the opposite edge is desired
for finishing a portrait document on simple finishing
devices that have only one finishing position. Thus a
'text'/plain' portrait document can be stapled "on the
right" by a simple finishing device as is common use
with some middle eastern languages such as Hebrew.
Note: The effect of this attribute on jobs with multiple documents is
controlled by the "multiple-document-handling" job attribute (section
4.2.4) and the relationship of this attribute and the other
attributes that control document processing is described in section
15.3.
4.2.11 media (type3 keyword name(MAX))
This attribute identifies the medium that the Printer uses for all
impressions of the Job.
The values for "media" include medium-names, medium-sizes, input-
trays and electronic forms so that one attribute specifies the media.
If a Printer object supports a medium name as a value of this
attribute, such a medium name implicitly selects an input-tray that
contains the specified medium. If a Printer object supports a medium
size as a value of this attribute, such a medium size implicitly
selects a medium name that in turn implicitly selects an input-tray
that contains the medium with the specified size. If a Printer
object supports an input-tray as the value of this attribute, such an
input-tray implicitly selects the medium that is in that input-tray
at the time the job prints. This case includes manual-feed input-
trays. If a Printer object supports an electronic form as the value
of this attribute, such an electronic form implicitly selects a
medium-name that in turn implicitly selects an input-tray that
contains the medium specified by the electronic form. The electronic
form also implicitly selects an image that the Printer MUST merge
with the document data as its prints each page.
Standard keyword values are (taken from ISO DPA and the Printer MIB)
and are listed in section 14. An administrator MAY define additional
values using the 'name' or 'keyword' attribute syntax, depending on
implementation.
There is also an additional Printer attribute named "media-ready"
which differs from "media-supported" in that legal values only
include the subset of "media-supported" values that are physically
loaded and ready for printing with no operator intervention required.
If an IPP object supports "media-supported", it NEED NOT support
"media-ready".
The relationship of this attribute and the other attributes that
control document processing is described in section 15.3.
4.2.12 printer-resolution (resolution)
This attribute identifies the resolution that Printer uses for the
Job.
4.2.13 print-quality (type2 enum)
This attribute specifies the print quality that the Printer uses for
the Job.
The standard enum values are:
Value Symbolic Name and Description
'3' 'draft': lowest quality available on the printer
'4' 'normal': normal or intermediate quality on the printer
'5' 'high': highest quality available on the printer
4.3 Job Description Attributes
The attributes in this section form the attribute group called "job-
description". The following table summarizes these attributes. The
third column indicates whether the attribute is a REQUIRED attribute
that MUST be supported by Printer objects. If it is not indicated as
REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text'
and 'name' attributes is indicated in parenthesizes.
+----------------------------+----------------------+----------------+
Attribute Syntax REQUIRED?
+----------------------------+----------------------+----------------+
job-uri uri REQUIRED
+----------------------------+----------------------+----------------+
job-id integer(1:MAX) REQUIRED
+----------------------------+----------------------+----------------+
job-printer-uri uri REQUIRED
+----------------------------+----------------------+----------------+
job-more-info uri
+----------------------------+----------------------+----------------+
job-name name (MAX) REQUIRED
+----------------------------+----------------------+----------------+
job-originating-user-name name (MAX) REQUIRED
+----------------------------+----------------------+----------------+
job-state type1 enum REQUIRED
+----------------------------+----------------------+----------------+
job-state-reasons 1setOf type2 keyword
+----------------------------+----------------------+----------------+
job-state-message text (MAX)
+----------------------------+----------------------+----------------+
number-of-documents integer (0:MAX)
+----------------------------+----------------------+----------------+
output-device-assigned name (127)
+----------------------------+----------------------+----------------+
time-at-creation integer (0:MAX)
+----------------------------+----------------------+----------------+
time-at-processing integer (0:MAX)
+----------------------------+----------------------+----------------+
time-at-completed integer (0:MAX)
+----------------------------+----------------------+----------------+
number-of-intervening-jobs integer (0:MAX)
+----------------------------+----------------------+----------------+
job-message-from-operator text (127)
+----------------------------+----------------------+----------------+
job-k-octets integer (0:MAX)
+----------------------------+----------------------+----------------+
job-impressions integer (0:MAX)
+----------------------------+----------------------+----------------+
+----------------------------+----------------------+----------------+
Attribute Syntax REQUIRED?
+----------------------------+----------------------+----------------+
job-media-sheets integer (0:MAX)
+----------------------------+----------------------+----------------+
job-k-octets-processed integer (0:MAX)
+----------------------------+----------------------+----------------+
job-impressions-completed integer (0:MAX)
+----------------------------+----------------------+----------------+
job-media-sheets-completed integer (0:MAX)
+----------------------------+----------------------+----------------+
attributes-charset charset REQUIRED
+----------------------------+----------------------+----------------+
attributes-natural-language naturalLanguage REQUIRED
+----------------------------+----------------------+----------------+
4.3.1 job-uri (uri)
This REQUIRED attribute contains the URI for the job. The Printer
object, on receipt of a new job, generates a URI which identifies the
new Job. The Printer object returns the value of the "job-uri"
attribute as part of the response to a create request. The precise
format of a Job URI is implementation dependent. If the Printer
object supports more than one URI and there is some relationship
between the newly formed Job URI and the Printer object's URI, the
Printer object uses the Printer URI supplied by the client in the
create request. For example, if the create request comes in over a
secure channel, the new Job URI MUST use the same secure channel.
This can be guaranteed because the Printer object is responsible for
generating the Job URI and the Printer object is aware of its
security configuration and policy as well as the Printer URI used in
the create request.
For a description of this attribute and its relationship to "job-id"
and "job-printer-uri" attribute, see the discussion in section 2.4 on
"Object Identity".
4.3.2 job-id (integer(1:MAX))
This REQUIRED attribute contains the ID of the job. The Printer, on
receipt of a new job, generates an ID which identifies the new Job on
that Printer. The Printer returns the value of the "job-id"
attribute as part of the response to a create request. The 0 value
is not included to allow for compatibility with SNMP index values
which also cannot be 0.
For a description of this attribute and its relationship to "job-uri"
and "job-printer-uri" attribute, see the discussion in section 2.4 on
"Object Identity".
4.3.3 job-printer-uri (uri)
This REQUIRED attribute identifies the Printer object that created
this Job object. When a Printer object creates a Job object, it
populates this attribute with the Printer object URI that was used in
the create request. This attribute permits a client to identify the
Printer object that created this Job object when only the Job
object's URI is available to the client. The client queries the
creating Printer object to determine which languages, charsets,
operations, are supported for this Job.
For a description of this attribute and its relationship to "job-uri"
and "job-id" attribute, see the discussion in section 2.4 on "Object
Identity".
4.3.4 job-more-info (uri)
Similar to "printer-more-info", this attribute contains the URI
referencing some resource with more information about this Job
object, perhaps an HTML page containing information about the Job.
4.3.5 job-name (name(MAX))
This REQUIRED attribute is the name of the job. It is a name that is
more user friendly than the "job-uri" attribute value. It does not
need to be unique between Jobs. The Job's "job-name" attribute is
set to the value supplied by the client in the "job-name" operation
attribute in the create request (see Section 3.2.1.1). If, however,
the "job-name" operation attribute is not supplied by the client in
the create request, the Printer object, on creation of the Job, MUST
generate a name. The printer SHOULD generate the value of the Job's
"job-name" attribute from the first of the following sources that
produces a value: 1) the "document-name" operation attribute of the
first (or only) document, 2) the "document-URI" attribute of the
first (or only) document, or 3) any other piece of Job specific
and/or Document Content information.
4.3.6 job-originating-user-name (name(MAX))
This REQUIRED attribute contains the name of the end user that
submitted the print job. The Printer object sets this attribute to
the most authenticated printable name that it can obtain from the
authentication service over which the IPP operation was received.
Only if such is not available, does the Printer object use the value
supplied by the client in the "requesting-user-name" operation
attribute of the create operation (see Section 8).
Note: The Printer object needs to keep an internal originating user
id of some form, typically as a credential of a principal, with the
Job object. Since such an internal attribute is implementation-
dependent and not of interest to clients, it is not specified as a
Job Description attribute. This originating user id is used for
authorization checks (if any) on all subsequent operation.
4.3.7 job-state (type1 enum)
This REQUIRED attribute identifies the current state of the job.
Even though the IPP protocol defines eight values for job states,
implementations only need to support those states which are
appropriate for the particular implementation. In other words, a
Printer supports only those job states implemented by the output
device and available to the Printer object implementation.
Standard enum values are:
Values Symbolic Name and Description
'3' 'pending': The job is a candidate to start processing, but
is not yet processing.
'4' 'pending-held': The job is not a candidate for processing
for any number of reasons but will return to the '
pending' state as soon as the reasons are no longer
present. The job's "job-state-reason" attribute MUST
indicate why the job is no longer a candidate for
processing.
'5' 'processing': One or more of:
1. the job is using, or is attempting to use, one or
more purely software processes that are analyzing,
creating, or interpreting a PDL, etc.,
2. the job is using, or is attempting to use, one or
more hardware devices that are interpreting a PDL,
making marks on a medium, and/or performing finishing,
such as stapling, etc.,
3. the Printer object has made the job ready for
printing, but the output device is not yet printing
it, either because the job hasn't reached the output
device or because the job is queued in the output
device or some other spooler, awaiting the output
device to print it.
When the job is in the 'processing' state, the entire
job state includes the detailed status represented in
the printer's "printer-state", "printer-state-
reasons", and "printer-state-message" attributes.
Implementations MAY, though they NEED NOT, include
additional values in the job's "job-state-reasons"
attribute to indicate the progress of the job, such as
adding the 'job-printing' value to indicate when the
output device is actually making marks on paper and/or
the 'processing-to-stop-point' value to indicate that
the IPP object is in the process of canceling or
aborting the job. Most implementations won't bother
with this nuance.
'6' 'processing-stopped': The job has stopped while processing
for any number of reasons and will return to the '
processing' state as soon as the reasons are no longer
present.
The job's "job-state-reason" attribute MAY indicate
why the job has stopped processing. For example, if
the output device is stopped, the 'printer-stopped'
value MAY be included in the job's "job-state-reasons"
attribute.
Note: When an output device is stopped, the device
usually indicates its condition in human readable form
locally at the device. A client can obtain more
complete device status remotely by querying the
Printer object's "printer-state", "printer-state-
reasons" and "printer-state-message" attributes.
'7' 'canceled': The job has been canceled by a Cancel-Job
operation and the Printer object has completed
canceling the job and all job status attributes have
reached their final values for the job. While the
Printer object is canceling the job, the job remains
in its current state, but the job's "job-state-
reasons" attribute SHOULD contain the 'processing-to-
stop-point' value and one of the 'canceled-by-user', '
canceled-by-operator', or 'canceled-at-device' value.
When the job moves to the 'canceled' state, the '
processing-to-stop-point' value, if present, MUST be
removed, but the 'canceled-by-xxx', if present, MUST
remain.
'8' 'aborted': The job has been aborted by the system, usually
while the job was in the 'processing' or 'processing-
stopped' state and the Printer has completed aborting
the job and all job status attributes have reached
their final values for the job. While the Printer
object is aborting the job, the job remains in its
current state, but the job's "job-state-reasons"
attribute SHOULD contain the 'processing-to-stop-
point' and 'aborted-by-system' values. When the job
moves to the 'aborted' state, the 'processing-to-
stop-point' value, if present, MUST be removed, but
the 'aborted-by-system' value, if present, MUST
remain.
'9' 'completed': The job has completed successfully or with
warnings or errors after processing and all of the job
media sheets have been successfully stacked in the
appropriate output bin(s) and all job status
attributes have reached their final values for the
job. The job's "job-state-reasons" attribute SHOULD
contain one of: 'completed-successfully', '
completed-with-warnings', or 'completed-with-errors'
values.
The final value for this attribute MUST be one of: 'completed', '
canceled', or 'aborted' before the Printer removes the job
altogether. The length of time that jobs remain in the 'canceled', '
aborted', and 'completed' states depends on implementation.
The following figure shows the normal job state transitions.
+----> canceled
/
+----> pending --------> processing ---------+------> completed
^ ^ --->+ +----> aborted
v v /
+----> pending-held processing-stopped ---+
Normally a job progresses from left to right. Other state
transitions are unlikely, but are not forbidden. Not shown are the
transitions to the 'canceled' state from the 'pending', 'pending-
held', and 'processing-stopped' states.
Jobs reach one of the three terminal states: 'completed', 'canceled',
or 'aborted', after the jobs have completed all activity, including
stacking output media, after the jobs have completed all activity,
and all job status attributes have reached their final values for the
job.
Note: As with all other IPP attributes, if the implementation can not
determine the correct value for this attribute, it SHOULD respond
with the out-of-band value 'unknown' (see section 4.1) rather than
try to guess at some possibly incorrect value and give the end user
the wrong impression about the state of the Job object. For example,
if the implementation is just a gateway into some printing system
that does not provide detailed status about the print job, the IPP
Job object's state might literally be 'unknown'.
4.3.8 job-state-reasons (1setOf type2 keyword)
This attribute provides additional information about the job's
current state, i.e., information that augments the value of the job's
"job-state" attribute.
Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT
implement them, even if (1) the output device supports the
functionality represented by the reason and (2) is available to the
Printer object implementation. These values MAY be used with any job
state or states for which the reason makes sense. Furthermore, when
implemented, the Printer MUST return these values when the reason
applies and MUST NOT return them when the reason no longer applies
whether the value of the Job's "job-state" attribute changed or not.
When the Job does not have any reasons for being in its current
state, the value of the Job's "job-state-reasons" attribute MUST be '
none'.
Note: While values cannot be added to the 'job-state' attribute
without impacting deployed clients that take actions upon receiving
"job-state" values, it is the intent that additional "job-state-
reasons" values can be defined and registered without impacting such
deployed clients. In other words, the "job-state-reasons" attribute
is intended to be extensible.
The following standard keyword values are defined. For ease of
understanding, the values are presented in the order in which the
reasons are likely to occur (if implemented), starting with the '
job-incoming' value:
'none': There are no reasons for the job's current state.
'job-incoming': The Create-Job operation has been accepted by the
Printer, but the Printer is expecting additional Send-Document
and/or Send-URI operations and/or is accessing/accepting
document data.
'submission-interrupted': The job was not completely submitted for
some unforeseen reason, such as: (1) the Printer has crashed
before the job was closed by the client, (2) the Printer or the
document transfer method has crashed in some non-recoverable way
before the document data was entirely transferred to the
Printer, (3) the client crashed or failed to close the job
before the time-out period. See section 4.4.28.
'job-outgoing': The Printer is transmitting the job to the output
device.
'job-hold-until-specified': The value of the job's "job-hold-
until" attribute was specified with a time period that is still
in the future. The job MUST NOT be a candidate for processing
until this reason is removed and there are no other reasons to
hold the job.
'resources-are-not-ready': At least one of the resources needed by
the job, such as media, fonts, resource objects, etc., is not
ready on any of the physical printer's for which the job is a
candidate. This condition MAY be detected when the job is
accepted, or subsequently while the job is pending or
processing, depending on implementation. The job may remain in
its current state or be moved to the 'pending-held' state,
depending on implementation and/or job scheduling policy.
'printer-stopped-partly': The value of the Printer's "printer-
state-reasons" attribute contains the value 'stopped-partly'.
'printer-stopped': The value of the Printer's "printer-state"
attribute is 'stopped'.
'job-interpreting': Job is in the 'processing' state, but more
specifically, the Printer is interpreting the document data.
'job-queued': Job is in the 'processing' state, but more
specifically, the Printer has queued the document data.
'job-transforming': Job is in the 'processing' state, but more
specifically, the Printer is interpreting document data and
producing another electronic representation.
'job-printing': The output device is marking media. This value is
useful for Printers which spend a great deal of time processing
(1) when no marking is happening and then want to show that
marking is now happening or (2) when the job is in the process
of being canceled or aborted while the job remains in the '
processing' state, but the marking has not yet stopped so that
impression or sheet counts are still increasing for the job.
'job-canceled-by-user': The job was canceled by the owner of the
job using the Cancel-Job request, i.e., by a user whose
authenticated identity is the same as the value of the
originating user that created the Job object, or by some other
authorized end-user, such as a member of the job owner's
security group.
'job-canceled-by-operator': The job was canceled by the operator
using the Cancel-Job request, i.e., by a user who has been
authenticated as having operator privileges (whether local or
remote). If the security policy is to allow anyone to cancel
anyone's job, then this value may be used when the job is
canceled by other than the owner of the job. For such a
security policy, in effect, everyone is an operator as far as
canceling jobs with IPP is concerned.
'job-canceled-at-device': The job was canceled by an unidentified
local user, i.e., a user at a console at the device.
'aborted-by-system': The job (1) is in the process of being
aborted, (2) has been aborted by the system and placed in the '
aborted' state, or (3) has been aborted by the system and placed
in the 'pending-held' state, so that a user or operator can
manually try the job again.
'processing-to-stop-point': The requester has issued a Cancel-Job
operation or the Printer object has aborted the job, but is
still performing some actions on the job until a specified stop
point occurs or job termination/cleanup is completed.
This reason is recommended to be used in conjunction with the '
processing' job state to indicate that the Printer object is
still performing some actions on the job while the job remains
in the 'processing' state. After all the job's job description
attributes have stopped incrementing, the Printer object moves
the job from the 'processing' state to the 'canceled' or '
aborted' job states.
'service-off-line': The Printer is off-line and accepting no jobs.
All 'pending' jobs are put into the 'pending-held' state. This
situation could be true if the service's or document transform's
input is impaired or broken.
'job-completed-successfully': The job completed successfully.
'job-completed-with-warnings': The job completed with warnings.
'job-completed-with-errors': The job completed with errors (and
possibly warnings too).
4.3.9 job-state-message (text(MAX))
This attribute specifies information about the "job-state" and "job-
state-reasons" attributes in human readable text. If the Printer
object supports this attribute, the Printer object MUST be able to
generate this message in any of the natural languages identified by
the Printer's "generated-natural-language-supported" attribute (see
the "attributes-natural-language" operation attribute specified in
Section 3.1.4.1).
Note: the value SHOULD NOT contain additional information not
contained in the values of the "job-state" and "job-states-reasons"
attributes, such as interpreter error information. Otherwise,
application programs might attempt to parse the (localized text).
For such additional information such as interpreter errors for
application program consumption, a new attribute with keyword values,
needs to be developed and registered.
4.3.10 number-of-documents (integer(0:MAX))
This attribute indicates the number of documents in the job, i.e.,
the number of Send-Document, Send-URI, Print-Job, or Print-URI
operations that the Printer has accepted for this job, regardless of
whether the document data has reached the Printer object or not.
Implementations supporting the OPTIONAL Create-Job/Send-
Document/Send-URI operations SHOULD support this attribute so that
clients can query the number of documents in each job.
4.3.11 output-device-assigned (name(127))
This attribute identifies the output device to which the Printer
object has assigned this job. If an output device implements an
embedded Printer object, the Printer object NEED NOT set this
attribute. If a print server implements a Printer object, the value
MAY be empty (zero-length string) or not returned until the Printer
object assigns an output device to the job. This attribute is
particularly useful when a single Printer object support multiple
devices (so called "fan-out").
4.3.12 time-at-creation (integer(0:MAX))
This attribute indicates the point in time at which the Job object
was created. In order to populate this attribute, the Printer object
uses the value in its "printer-up-time" attribute at the time the Job
object is created.
4.3.13 time-at-processing (integer(0:MAX))
This attribute indicates the point in time at which the Job object
began processing. In order to populate this attribute, the Printer
object uses the value in its "printer-up-time" attribute at the time
the Job object is moved into the 'processing' state for the first
time.
4.3.14 time-at-completed (integer(0:MAX))
This attribute indicates the point in time at which the Job object
completed (or was cancelled or aborted). In order to populate this
attribute, the Printer object uses the value in its "printer-up-time"
attribute at the time the Job object is moved into the 'completed' or
'canceled' or 'aborted' state.
4.3.15 number-of-intervening-jobs (integer(0:MAX))
This attribute indicates the number of jobs that are "ahead" of this
job in the relative chronological order of expected time to complete
(i.e., the current scheduled order). For efficiency, it is only
necessary to calculate this value when an operation is performed that
requests this attribute.
4.3.16 job-message-from-operator (text(127))
This attribute provides a message from an operator, system
administrator or "intelligent" process to indicate to the end user
the reasons for modification or other management action taken on a
job.
4.3.17 job-k-octets (integer(0:MAX))
This attribute specifies the total size of the document(s) in K
octets, i.e., in units of 1024 octets requested to be processed in
the job. The value MUST be rounded up, so that a job between 1 and
1024 octets MUST be indicated as being 1, 1025 to 2048 MUST be 2,
etc.
This value MUST NOT include the multiplicative factors contributed by
the number of copies specified by the "copies" attribute, independent
of whether the device can process multiple copies without making
multiple passes over the job or document data and independent of
whether the output is collated or not. Thus the value is independent
of the implementation and indicates the size of the document(s)
measured in K octets independent of the number of copies.
This value MUST also not include the multiplicative factor due to a
copies instruction embedded in the document data. If the document
data actually includes replications of the document data, this value
will include such replication. In other words, this value is always
the size of the source document data, rather than a measure of the
hardcopy output to be produced.
Note: This attribute and the following two attributes ("job-
impressions" and "job-media-sheets") are not intended to be counters;
they are intended to be useful routing and scheduling information if
known. For these three attributes, the Printer object may try to
compute the value if it is not supplied in the create request. Even
if the client does supply a value for these three attributes in the
create request, the Printer object MAY choose to change the value if
the Printer object is able to compute a value which is more accurate
than the client supplied value. The Printer object may be able to
determine the correct value for these three attributes either right
at job submission time or at any later point in time.
4.3.18 job-impressions (integer(0:MAX))
This attribute specifies the total size in number of impressions of
the document(s) being submitted (see the definition of impression in
section 13.2.5).
As with "job-k-octets", this value MUST NOT include the
multiplicative factors contributed by the number of copies specified
by the "copies" attribute, independent of whether the device can
process multiple copies without making multiple passes over the job
or document data and independent of whether the output is collated or
not. Thus the value is independent of the implementation and
reflects the size of the document(s) measured in impressions
independent of the number of copies.
As with "job-k-octets", this value MUST also not include the
multiplicative factor due to a copies instruction embedded in the
document data. If the document data actually includes replications
of the document data, this value will include such replication. In
other words, this value is always the number of impressions in the
source document data, rather than a measure of the number of
impressions to be produced by the job.
See the Note in the "job-k-octets" attribute that also applies to
this attribute.
4.3.19 job-media-sheets (integer(0:MAX))
This attribute specifies the total number of media sheets to be
produced for this job.
Unlike the "job-k-octets" and the "job-impressions" attributes, this
value MUST include the multiplicative factors contributed by the
number of copies specified by the "copies" attribute and a 'number of
copies' instruction embedded in the document data, if any. This
difference allows the system administrator to control the lower and
upper bounds of both (1) the size of the document(s) with "job-k-
octets-supported" and "job-impressions-supported" and (2) the size of
the job with "job-media-sheets-supported".
See the Note in the "job-k-octets" attribute that also applies to
this attribute.
4.3.20 job-k-octets-processed (integer(0:MAX))
This attribute specifies the total number of octets processed in K
octets, i.e., in units of 1024 octets so far. The value MUST be
rounded up, so that a job between 1 and 1024 octets inclusive MUST be
indicated as being 1, 1025 to 2048 inclusive MUST be 2, etc.
For implementations where multiple copies are produced by the
interpreter with only a single pass over the data, the final value
MUST be equal to the value of the "job-k-octets" attribute. For
implementations where multiple copies are produced by the interpreter
by processing the data for each copy, the final value MUST be a
multiple of the value of the "job-k-octets" attribute.
Note: This attribute and the following two attributes ("job-
impressions-completed" and "job-sheets-completed") are intended to be
counters. That is, the value for a job that has not started
processing MUST be 0. When the job's "job-state" is 'processing' or
'processing-stopped', this value is intended to contain the amount of
the job that has been processed to the time at which the attributes
are requested.
4.3.21 job-impressions-completed (integer(0:MAX))
This job attribute specifies the number of impressions completed for
the job so far. For printing devices, the impressions completed
includes interpreting, marking, and stacking the output.
See the note in "job-k-octets-processed" which also applies to this
attribute.
4.3.22 job-media-sheets-completed (integer(0:MAX))
This job attribute specifies the media-sheets completed marking and
stacking for the entire job so far whether those sheets have been
processed on one side or on both.
See the note in "job-k-octets-processed" which also applies to this
attribute.
4.3.23 attributes-charset (charset)
This REQUIRED attribute is populated using the value in the client
supplied "attributes-charset" attribute in the create request. It
identifies the charset (coded character set and encoding method) used
by any Job attributes with attribute syntax 'text' and 'name' that
were supplied by the client in the create request. See Section 3.1.4
for a complete description of the "attributes-charset" operation
attribute.
This attribute does not indicate the charset in which the 'text' and
'name' values are stored internally in the Job object. The internal
charset is implementation-defined. The IPP object MUST convert from
whatever the internal charset is to that being requested in an
operation as specified in Section 3.1.4.
4.3.24 attributes-natural-language (naturalLanguage)
This REQUIRED attribute is populated using the value in the client
supplied "attributes-natural-language" attribute in the create
request. It identifies the natural language used for any Job
attributes with attribute syntax 'text' and 'name' that were supplied
by the client in the create request. See Section 3.1.4 for a
complete description of the "attributes-natural-language" operation
attribute. See Sections 4.1.1.2 and 4.1.2.2 for how a Natural
Language Override may be supplied explicitly for each 'text' and '
name' attribute value that differs from the value identified by the
"attributes-natural-language" attribute.
4.4 Printer Description Attributes
These attributes form the attribute group called "printer-
description". The following table summarizes these attributes, their
syntax, and whether or not they are REQUIRED for a Printer object to
support. If they are not indicated as REQUIRED, they are OPTIONAL.
The maximum size in octets for 'text' and 'name' attributes is
indicated in parenthesizes.
Note: How these attributes are set by an Administrator is outside the
scope of this specification.
+----------------------------+----------------------+----------------+
Attribute Syntax REQUIRED?
+----------------------------+----------------------+----------------+
printer-uri-supported 1setOf uri REQUIRED
+----------------------------+----------------------+----------------+
uri-security-supported 1setOf type2 keyword REQUIRED
+----------------------------+----------------------+----------------+
printer-name name (127) REQUIRED
+----------------------------+----------------------+----------------+
printer-location text (127)
+----------------------------+----------------------+----------------+
printer-info text (127)
+----------------------------+----------------------+----------------+
printer-more-info uri
+----------------------------+----------------------+----------------+
printer-driver-installer uri
+----------------------------+----------------------+----------------+
printer-make-and-model text (127)
+----------------------------+----------------------+----------------+
printer-more-info- uri
manufacturer
+----------------------------+----------------------+----------------+
printer-state type1 enum REQUIRED
+----------------------------+----------------------+----------------+
printer-state-reasons 1setOf type2 keyword
+----------------------------+----------------------+----------------+
printer-state-message text (MAX)
+----------------------------+----------------------+----------------+
operations-supported 1setOf type2 enum REQUIRED
+----------------------------+----------------------+----------------+
charset-configured charset REQUIRED
+----------------------------+----------------------+----------------+
charset-supported 1setOf charset REQUIRED
+----------------------------+----------------------+----------------+
natural-language-configured naturalLanguage REQUIRED
+----------------------------+----------------------+----------------+
generated-natural-language- 1setOf REQUIRED
supported naturalLanguage
+----------------------------+----------------------+----------------+
document-format-default mimeMediaType REQUIRED
+----------------------------+----------------------+----------------+
document-format- 1setOf REQUIRED
supported mimeMediaType
+----------------------------+----------------------+----------------+
printer-is-accepting-jobs boolean REQUIRED
+----------------------------+----------------------+----------------+
queued-job-count integer (0:MAX) RECOMMENDED
+----------------------------+----------------------+----------------+
+----------------------------+----------------------+----------------+
Attribute Syntax REQUIRED?
+----------------------------+----------------------+----------------+
printer-message-from- text (127)
operator
+----------------------------+----------------------+----------------+
color-supported boolean
+----------------------------+----------------------+----------------+
reference-uri-schemes- 1setOf uriScheme
supported
+----------------------------+----------------------+----------------+
pdl-override-supported type2 keyword REQUIRED
+----------------------------+----------------------+----------------+
printer-up-time integer (1:MAX) REQUIRED
+----------------------------+----------------------+----------------+
printer-current-time dateTime
+----------------------------+----------------------+----------------+
multiple-operation-time-out integer (1:MAX)
+----------------------------+----------------------+----------------+
compression-supported 1setOf type3 keyword
+----------------------------+----------------------+----------------+
job-k-octets-supported rangeOfInteger
(0:MAX)
+----------------------------+----------------------+----------------+
job-impressions-supported rangeOfInteger
(0:MAX)
+----------------------------+----------------------+----------------+
job-media-sheets-supported rangeOfInteger
(0:MAX)
+----------------------------+----------------------+----------------+
4.4.1 printer-uri-supported (1setOf uri)
This REQUIRED Printer attribute contains at least one URI for the
Printer object. It OPTIONALLY contains more than one URI for the
Printer object. An administrator determines a Printer object's
URI(s) and configures this attribute to contain those URIs by some
means outside the scope of IPP/1.0. The precise format of this URI
is implementation dependent and depends on the protocol. See the
next section for a description "uri-security-supported" which is the
REQUIRED companion attribute to this "printer-uri-supported"
attribute. See section 2.4 on Printer object identity and section
8.2 on security and URIs for more information.
4.4.2 uri-security-supported (1setOf type2 keyword)
This REQUIRED Printer attribute MUST have the same cardinality
(contain the same number of values) as the "printer-uri-supported"
attribute. This attribute identifies the security mechanisms used
for each URI listed in the "printer-uri-supported" attribute. The "i
th" value in "uri-security-supported" corresponds to the "i th" value
in "printer-uri-supported" and it describes the security mechanisms
used for accessing the Printer object via that URI. The following
standard values are defined:
'none': There are no secure communication channel protocols in use
for the given URI.
'ssl3': SSL3 [SSL] is the secure communications channel protocol in
use for the given URI.
Consider the following example. For a single Printer object, an
administrator configures the "printer-uri-supported" and "uri-
security-supported" attributes as follows:
"printer-uri-supported": 'http://acme.com/open-use-printer', '
http://acme.com/restricted-use-printer', '
http://acme.com/private-printer'
"uri-security-supported": 'none', 'none', 'ssl3'
In this case, one Printer object has three URIs.
- For the first URI, 'http://acme.com/open-use-printer', the value
'none' in "uri-security-supported" indicates that there is no
secure channel protocol configured to run under HTTP. The name
implies that there is no Basic or Digest authentication being
used, but it is up to the client to determine that while using
HTTP underneath the IPP application protocol.
- For the second URI, 'http://acme.com/restricted-use-printer', the
value 'none' in "uri-security-supported" indicates that there is
no secure channel protocol configured to run under HTTP. In
this case, although the name does imply that there is some sort
of Basic or Digest authentication being used within HTTP, it is
up to the client to determine that while using HTTP and by
processing any '401 Unauthorized' HTTP error messages.
- For the third URI, 'http://acme.com/private-printer', the value '
ssl3' in "uri-security-supported" indicates that SSL3 is being
used to secure the channel. The client SHOULD be prepared to
use SSL3 framing to negotiate an acceptable ciphersuite to use
while communicating with the Printer object. In this case, the
name implies the use of a secure communications channel, but the
fact is made explicit by the presence of the 'ssl3' value in
"uri-security-supported". The client does not need to resort to
understanding which security it must use by following naming
conventions or by parsing the URI to determine which security
mechanisms are implied.
It is expected that many IPP Printer objects will be configured to
support only one channel (either configured to use SSL3 access or
not), and will therefore only ever have one URI listed in the
"printer-uri-supported" attribute. No matter the configuration of
the Printer object (whether it has only one URI or more than one
URI), a client MUST supply only one URI in the target "printer-uri"
operation attribute.
4.4.3 printer-name (name(127))
This REQUIRED Printer attribute contains the name of the Printer
object. It is a name that is more end-user friendly than a URI. An
administrator determines a printer's name and sets this attribute to
that name. This name may be the last part of the printer's URI or it
may be unrelated. In non-US-English locales, a name may contain
characters that are not allowed in a URI.
4.4.4 printer-location (text(127))
This Printer attribute identifies the location of the device. This
could include things like: "in Room 123A, second floor of building
XYZ".
4.4.5 printer-info (text(127))
This Printer attribute identifies the descriptive information about
this Printer object. This could include things like: "This printer
can be used for printing color transparencies for HR presentations",
or "Out of courtesy for others, please print only small (1-5 page)
jobs at this printer", or even "This printer is going away on July 1,
1997, please find a new printer".
4.4.6 printer-more-info (uri)
This Printer attribute contains a URI used to obtain more information
about this specific Printer object. For example, this could be an
HTTP type URI referencing an HTML page accessible to a Web Browser.
The information obtained from this URI is intended for end user
consumption. Features outside the scope of IPP can be accessed from
this URI. The information is intended to be specific to this printer
instance and site specific services (e.g. job pricing, services
offered, end user assistance). The device manufacturer may initially
populate this attribute.
4.4.7 printer-driver-installer (uri)
This Printer attribute contains a URI to use to locate the driver
installer for this Printer object. This attribute is intended for
consumption by automata. The mechanics of print driver installation
is outside the scope of IPP. The device manufacturer may initially
populate this attribute.
4.4.8 printer-make-and-model (text(127))
This Printer attribute identifies the make and model of the device.
The device manufacturer may initially populate this attribute.
4.4.9 printer-more-info-manufacturer (uri)
This Printer attribute contains a URI used to obtain more information
about this type of device. The information obtained from this URI is
intended for end user consumption. Features outside the scope of IPP
can be accessed from this URI (e.g., latest firmware, upgrades, print
drivers, optional features available, details on color support). The
information is intended to be germane to this printer without regard
to site specific modifications or services. The device manufacturer
may initially populate this attribute.
4.4.10 printer-state (type1 enum)
This REQUIRED Printer attribute identifies the current state of the
device. The "printer-state reasons" attribute augments the
"printer-state" attribute to give more detailed information about the
Printer in the given printer state.
A Printer object need only update this attribute before responding to
an operation which requests the attribute; the Printer object NEED
NOT update this attribute continually, since asynchronous event
notification is not part of IPP/1.0. A Printer NEED NOT implement
all values if they are not applicable to a given implementation.
The following standard enum values are defined:
Value Symbolic Name and Description
'3' 'idle': If a Printer receives a job (whose required
resources are ready) while in this state, such a job
MUST transit into the 'processing' state immediately.
If the "printer-state-reasons" attribute contains any
reasons, they MUST be reasons that would not prevent a
job from transiting into the 'processing' state
immediately, e.g., 'toner-low'. Note: if a Printer
controls more than one output device, the above
definition implies that a Printer is 'idle' if at
least one output device is idle.
'4' 'processing': If a Printer receives a job (whose required
resources are ready) while in this state, such a job
MUST transit into the 'pending' state immediately.
Such a job MUST transit into the 'processing' state
only after jobs ahead of it complete. If the
"printer-state-reasons" attribute contains any
reasons, they MUST be reasons that do not prevent the
current job from printing, e.g. 'toner-low'. Note:
if a Printer controls more than one output device, the
above definition implies that a Printer is '
processing' if at least one output device is
processing, and none is idle.
'5' 'stopped': If a Printer receives a job (whose required
resources are ready) while in this state, such a job
MUST transit into the 'pending' state immediately.
Such a job MUST transit into the 'processing' state
only after some human fixes the problem that stopped
the printer and after jobs ahead of it complete
processing. If supported, the "printer-state-reasons"
attribute MUST contain at least one reason, e.g. '
media-jam', which prevents it from either processing
the current job or transitioning a 'pending' job to
the 'processing' state.
Note: if a Printer controls more than one output
device, the above definition implies that a Printer is
'stopped' only if all output devices are stopped.
Also, it is tempting to define 'stopped' as when a
sufficient number of output devices are stopped and
leave it to an implementation to define the sufficient
number. But such a rule complicates the definition of
'stopped' and 'processing'. For example, with this
alternate definition of 'stopped', a job can move from
'pending' to 'processing' without human intervention,
even though the Printer is stopped.
4.4.11 printer-state-reasons (1setOf type2 keyword)
This Printer attribute supplies additional detail about the device's
state.
Each keyword value MAY have a suffix to indicate its level of
severity. The three levels are: report (least severe), warning, and
error (most severe).
- '-report': This suffix indicates that the reason is a "report".
An implementation may choose to omit some or all reports. Some
reports specify finer granularity about the printer state;
others serve as a precursor to a warning. A report MUST contain
nothing that could affect the printed output.
- '-warning': This suffix indicates that the reason is a "warning".
An implementation may choose to omit some or all warnings.
Warnings serve as a precursor to an error. A warning MUST
contain nothing that prevents a job from completing, though in
some cases the output may be of lower quality.
- '-error': This suffix indicates that the reason is an "error".
An implementation MUST include all errors. If this attribute
contains one or more errors, printer MUST be in the stopped
state.
If the implementation does not add any one of the three suffixes, all
parties MUST assume that the reason is an "error".
If a Printer object controls more than one output device, each value
of this attribute MAY apply to one or more of the output devices. An
error on one output device that does not stop the Printer object as a
whole MAY appear as a warning in the Printer's "printer-state-reasons
attribute". If the "printer-state" for such a Printer has a value of
'stopped', then there MUST be an error reason among the values in the
"printer-state-reasons" attribute.
The following standard keyword values are defined:
'other': The device has detected an error other than one listed in
this document.
'none': There are not reasons. This state reason is semantically
equivalent to "printer-state-reasons" without any value.
'media-needed': A tray has run out of media.
'media-jam': The device has a media jam.
'paused': Someone has paused the Printer object. In this state, a
Printer MUST NOT produce printed output, but it MUST perform
other operations requested by a client. If a Printer had been
printing a job when the Printer was paused, the Printer MUST
resume printing that job when the Printer is no longer paused
and leave no evidence in the printed output of such a pause.
'shutdown': Someone has removed a Printer object from service, and
the device may be powered down or physically removed. In this
state, a Printer object MUST NOT produce printed output, and
unless the Printer object is realized by a print server that is
still active, the Printer object MUST perform no other
operations requested by a client, including returning this
value. If a Printer object had been printing a job when it was
shutdown, the Printer NEED NOT resume printing that job when the
Printer is no longer shutdown. If the Printer resumes printing
such a job, it may leave evidence in the printed output of such
a shutdown, e.g. the part printed before the shutdown may be
printed a second time after the shutdown.
'connecting-to-device': The Printer object has scheduled a job on
the output device and is in the process of connecting to a
shared network output device (and might not be able to actually
start printing the job for an arbitrarily long time depending on
the usage of the output device by other servers on the network).
'timed-out': The server was able to connect to the output device
(or is always connected), but was unable to get a response from
the output device.
'stopping': The Printer object is in the process of stopping the
device and will be stopped in a while. When the device is
stopped, the Printer object will change the Printer object's
state to 'stopped'. The 'stopping-warning' reason is never an
error, even for a Printer with a single output device. When an
output-device ceases accepting jobs, the Printer will have this
reason while the output device completes printing.
'stopped-partly': When a Printer object controls more than one
output device, this reason indicates that one or more output
devices are stopped. If the reason is a report, fewer than half
of the output devices are stopped. If the reason is a warning,
fewer than all of the output devices are stopped.
'toner-low': The device is low on toner.
'toner-empty': The device is out of toner.
'spool-area-full': The limit of persistent storage allocated for
spooling has been reached.
'cover-open': One or more covers on the device are open.
'interlock-open': One or more interlock devices on the printer are
unlocked.
'door-open': One or more doors on the device are open.
'input-tray-missing': One or more input trays are not in the
device.
'media-low': At least one input tray is low on media.
'media-empty': At least one input tray is empty.
'output-tray-missing': One or more output trays are not in the
device
'output-area-almost-full': One or more output area is almost full
(e.g. tray, stacker, collator).
'output-area-full': One or more output area is full. (e.g. tray,
stacker, collator)
'marker-supply-low': The device is low on at least one marker
supply. (e.g. toner, ink, ribbon)
'marker-supply-empty: The device is out of at least one marker
supply. (e.g. toner, ink, ribbon)
'marker-waste-almost-full': The device marker supply waste
receptacle is almost full.
'marker-waste-full': The device marker supply waste receptacle is
full.
'fuser-over-temp': The fuser temperature is above normal.
'fuser-under-temp': The fuser temperature is below normal.
'opc-near-eol': The optical photo conductor is near end of life.
'opc-life-over': The optical photo conductor is no longer
functioning.
'developer-low': The device is low on developer.
'developer-empty: The device is out of developer.
'interpreter-resource-unavailable': An interpreter resource is
unavailable (i.e. font, form)
4.4.12 printer-state-message (text(MAX))
This Printer attribute specifies the additional information about the
printer state and printer state reasons in human readable text. If
the Printer object supports this attribute, the Printer object MUST
be able to generate this message in any of the natural languages
identified by the Printer's "generated-natural-language-supported"
attribute (see the "attributes-natural-language" operation attribute
specified in Section 3.1.4.1).
4.4.13 operations-supported (1setOf type2 enum)
This REQUIRED Printer attribute specifies the set of supported
operations for this Printer object and contained Job objects. All
32-bit enum values for this attribute MUST NOT exceed 0x8FFF, since
these values are passed in two octets in each Protocol request
[RFC2565].
The following standard enum and "operation-id" (see section 3.1.2)
values are defined:
Value Operation Name
----------------- -------------------------------------