Tech-invite3GPPspaceIETFspace
959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 2566

Internet Printing Protocol/1.0: Model and Semantics

Pages: 173
Obsoleted by:  2911
Part 4 of 7 – Pages 75 to 99
First   Prev   Next

ToP   noToC   RFC2566 - Page 75   prevText
4.2.2 job-hold-until (type3 keyword | name (MAX))

   This attribute specifies the named time period during which the Job
   MUST become a candidate for printing.

   Standard keyword values for named time periods are:

     'no-hold': immediately, if there are not other reasons to hold the
        job
     'day-time': during the day
     'evening': evening
     'night': night
     'weekend': weekend
     'second-shift': second-shift (after close of business)
     'third-shift': third-shift (after midnight)

   An administrator MUST associate allowable print times with a named
   time period (by means outside IPP/1.0).  An administrator is
   encouraged to pick names that suggest the type of time period. An
   administrator MAY define additional values using the 'name' or '
   keyword' attribute syntax, depending on implementation.

   If the value of this attribute specifies a time period that is in the
   future, the Printer MUST add the 'job-hold-until-specified' value to
   the job's "job-state-reasons" attribute, move the job to the '
   pending-held' state, and MUST NOT schedule the job for printing until
   the specified time-period arrives.  When the specified time period
   arrives, the Printer MUST remove the 'job-hold-until-specified' value
   from the job's "job-state-reason" attribute and, if there are no
   other job state reasons that keep the job in the 'pending-held'
   state, the Printer MUST consider the job as a candidate for
   processing by moving the job to the 'pending' state.

   If this job attribute value is the named value 'no-hold', or the
   specified time period has already started, the job MUST be a
   candidate for processing immediately.

   If the client does not supply this attribute and this attribute is
   supported by the Printer object, the Printer object MUST use the
   value of the Printer object's "job-hold-until-default" at job
   submission time (unlike most Job Template attributes that are used if
   necessary at job processing time).

4.2.3 job-sheets (type3 keyword | name(MAX))

   This attribute determines which job start/end sheet(s), if any, MUST
   be printed with a job.
ToP   noToC   RFC2566 - Page 76
   Standard keyword values are:

     'none': no job sheet is printed
     'standard': one or more site specific standard job sheets are
        printed, e.g. a single start sheet or both start and end sheet
        is printed

   An administrator MAY define additional values using the 'name' or '
   keyword' attribute syntax, depending on implementation.

   Note: The effect of this attribute on jobs with multiple documents
   MAY be affected by the "multiple-document-handling" job attribute
   (section 4.2.4), depending on the job sheet semantics.

4.2.4 multiple-document-handling (type2 keyword)

   This attribute is relevant only if a job consists of two or more
   documents. The attribute controls finishing operations and the
   placement of one or more print-stream pages into impressions and onto
   media sheets.  When the value of the "copies" attribute exceeds 1, it
   also controls the order in which the copies that result from
   processing the documents are produced. For the purposes of this
   explanations, if "a" represents an instance of document data, then
   the result of processing the data in document "a" is a sequence of
   media sheets represented by "a(*)".

   Standard keyword values are:

     'single-document': If a Job object has multiple documents, say, the
        document data is called a and b, then the result of processing
        all the document data (a and then b) MUST be treated as a single
        sequence of media sheets for finishing operations; that is,
        finishing would be performed on the concatenation of the
        sequences a(*),b(*).  The Printer object MUST NOT force the data
        in each document instance to be formatted onto a new print-
        stream page, nor to start a new impression on a new media sheet.
        If more than one copy is made, the ordering of the sets of media
        sheets resulting from processing the document data MUST be a(*),
        b(*), a(*), b(*), ..., and the Printer object MUST force each
        copy (a(*),b(*)) to start on a new media sheet.
     'separate-documents-uncollated-copies': If a Job object has
        multiple documents, say, the document data is called a and b,
        then the result of processing the data in each document instance
        MUST be treated as a single sequence of media sheets for
        finishing operations; that is, the sets a(*) and b(*) would each
        be finished separately. The Printer object MUST force each copy
        of the result of processing the data in a single document to
        start on a new media sheet. If more than one copy is made, the
ToP   noToC   RFC2566 - Page 77
        ordering of the sets of media sheets resulting from processing
        the document data MUST be a(*), a(*), ..., b(*), b(*) ... .
     'separate-documents-collated-copies': If a Job object has multiple
        documents, say, the document data is called a and b, then the
        result of processing the data in each document instance MUST be
        treated as a single sequence of media sheets for finishing
        operations; that is, the sets a(*) and b(*) would each be
        finished separately. The Printer object MUST force each copy of
        the result of processing the data in a single document to start
        on a new media sheet.  If more than one copy is made, the
        ordering of the sets of media sheets resulting from processing
        the document data MUST be a(*), b(*), a(*), b(*), ... .
     'single-document-new-sheet':  Same as 'single-document', except
        that the Printer object MUST ensure that the first impression of
        each document instance in the job is placed on a new media
        sheet.  This value allows multiple documents to be stapled
        together with a single staple where each document starts on a
        new sheet.

   The 'single-document' value is the same as 'separate-documents-
   collated-copies' with respect to ordering of print-stream pages, but
   not media sheet generation, since 'single-document' will put the
   first page of the next document on the back side of a sheet if an odd
   number of pages have been produced so far for the job, while '
   separate-documents-collated-copies' always forces the next document
   or document copy on to a new sheet.  In addition, if the "finishings"
   attribute specifies 'staple', then with 'single-document', documents
   a and b are stapled together as a single document with no regard to
   new sheets, with 'single-document-new-sheet', documents a and b are
   stapled together as a single document, but document b starts on a new
   sheet, but with 'separate-documents-uncollated-copies' and '
   separate-documents-collated-copies', documents a and b are stapled
   separately.

   Note: None of these values provide means to produce uncollated sheets
   within a document, i.e., where multiple copies of sheet n are
   produced before sheet n+1 of the same document.

   The relationship of this attribute and the other attributes that
   control document processing is described in section 15.3.

4.2.5 copies (integer(1:MAX))

   This attribute specifies the number of copies to be printed.

   On many devices the supported number of collated copies will be
   limited by the number of physical output bins on the device, and may
   be different from the number of uncollated copies which can be
ToP   noToC   RFC2566 - Page 78
   supported.

   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.6 finishings (1setOf type2 enum)

   This attribute identifies the finishing operations that the Printer
   uses for each copy of each printed document in the Job. For Jobs with
   multiple documents, the "multiple-document-handling" attribute
   determines what constitutes a "copy" for purposes of finishing.

   Standard enum values are:

     Value  Symbolic Name and Description

     '3'    'none':  Perform no finishing
     '4'    'staple':  Bind the document(s) with one or more staples.
                  The exact number and placement of the staples is
                  site-defined.
     '5'    'punch':  This value indicates that holes are required in
                  the finished document. The exact number and placement
                  of the holes is site-defined  The punch specification
                  MAY be satisfied (in a site- and implementation-
                  specific manner) either by drilling/punching, or by
                  substituting pre-drilled media.
     '6'    'cover':  This value is specified when it is desired to
                  select a non-printed (or pre-printed) cover for the
                  document.  This does not supplant the specification of
                  a printed cover (on cover stock medium) by the
                  document itself.
     '7'    'bind':  This value indicates that a binding is to be
                  applied to the document; the type and placement of the
                  binding is site-defined."

   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.

   If the client supplies a value of 'none' along with any other
   combination of values, it is the same as if only that other
   combination of values had been supplied (that is the 'none' value has
   no effect).
ToP   noToC   RFC2566 - Page 79
4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))

   This attribute identifies the range(s) of print-stream pages that the
   Printer object uses for each copy of each document which are to be
   printed.  Nothing is printed for any pages identified that do not
   exist in the document(s).  Ranges MUST be in ascending order, for
   example: 1-3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling
   Printer object can process the job in a single pass.  If the ranges
   are not ascending or are overlapping, the IPP object MUST reject the
   request and return the 'client-error-bad-request' status code.  The
   attribute is associated with print-stream pages not application-
   numbered pages (for example, the page numbers found in the headers
   and or footers for certain word processing applications).

   For Jobs with multiple documents, the "multiple-document-handling"
   attribute determines what constitutes a "copy" for purposes of the
   specified page range(s).  When "multiple-document-handling" is '
   single-document', the Printer object MUST apply each supplied page
   range once to the concatenation of the print-stream pages.  For
   example, if there are 8 documents of 10 pages each, the page-range '
   41:60' prints the pages in the 5th and 6th documents as a single
   document and none of the pages of the other documents are printed.
   When "multiple-document-handling" is 'separate-documents-uncollated-
   copies' or 'separate-documents-collated-copies', the Printer object
   MUST apply each supplied page range repeatedly to each document copy.
   For the same job, the page-range '1:3, 10:10' would print the first 3
   pages and the 10th page of each of the 8 documents in the Job, as 8
   separate documents.

   In most cases, the exact pages to be printed will be generated by a
   device driver and this attribute would not be required.  However,
   when printing an archived document which has already been formatted,
   the end user may elect to print just a subset of the pages contained
   in the document.  In this case, if page-range = n.m is specified, the
   first page to be printed will be page n. All subsequent pages of the
   document will be printed through and including page m.

   "page-ranges-supported" is a boolean value indicating whether or not
   the printer is capable of supporting the printing of page ranges.
   This capability may differ from one PDL to another. There is no
   "page-ranges-default" attribute.  If the "page-ranges" attribute is
   not supplied by the client, all pages of the document will be
   printed.
ToP   noToC   RFC2566 - Page 80
   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.8 sides (type2 keyword)

   This attribute specifies how print-stream pages are to be imposed
   upon the sides of an instance of a selected medium, i.e., an
   impression.

   The standard keyword values are:

     'one-sided': imposes each consecutive print-stream page upon the
        same side of consecutive media sheets.
     'two-sided-long-edge': imposes each consecutive pair of print-
        stream pages upon front and back sides of consecutive media
        sheets, such that the orientation of each pair of print-stream
        pages on the medium would be correct for the reader as if for
        binding on the long edge.  This imposition is sometimes called '
        duplex' or 'head-to-head'.
     'two-sided-short-edge': imposes each consecutive pair of print-
        stream pages upon front and back sides of consecutive media
        sheets, such that the orientation of each pair of print-stream
        pages on the medium would be correct for the reader as if for
        binding on the short edge.  This imposition is sometimes called
        'tumble' or 'head-to-toe'.

   'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex'
   all work the same for portrait or landscape.  However 'head-to-toe'
   is 'tumble' in portrait but 'duplex' in landscape.  'head-to-head'
   also switches between 'duplex' and 'tumble' when using portrait and
   landscape modes.

   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.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:
ToP   noToC   RFC2566 - Page 81
     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.
ToP   noToC   RFC2566 - Page 82
   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.
ToP   noToC   RFC2566 - Page 83
   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
ToP   noToC   RFC2566 - Page 84
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)      |                |
   +----------------------------+----------------------+----------------+
ToP   noToC   RFC2566 - Page 85
   +----------------------------+----------------------+----------------+
   |      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.
ToP   noToC   RFC2566 - Page 86
   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.
ToP   noToC   RFC2566 - Page 87
   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
ToP   noToC   RFC2566 - Page 88
                  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.
ToP   noToC   RFC2566 - Page 89
                  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.
ToP   noToC   RFC2566 - Page 90
   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
ToP   noToC   RFC2566 - Page 91
        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.
ToP   noToC   RFC2566 - Page 92
     '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).
ToP   noToC   RFC2566 - Page 93
   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.
ToP   noToC   RFC2566 - Page 94
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.
ToP   noToC   RFC2566 - Page 95
   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
ToP   noToC   RFC2566 - Page 96
   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.
ToP   noToC   RFC2566 - Page 97
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.
ToP   noToC   RFC2566 - Page 98
  +----------------------------+----------------------+----------------+
  |      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   |
  +----------------------------+----------------------+----------------+
ToP   noToC   RFC2566 - Page 99
  +----------------------------+----------------------+----------------+
  |      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.


(next page on part 5)

Next Section