A Project of the PWG IPP Working Group

Internet Printing Protocol (IPP): 
Override Attributes for Documents and Pages

IEEE-ISTO Printer Working Group
Standard 5100.4-2001

February 7, 2001
Abstract
This document specifies an extension to the Internet Printing Protocol/1.0 (IPP) [RFC2565, RFC2566] and IPP/1.1 [RFC2910, RFC2911]. This extension relaxes the restriction that each attribute value is the same for all pages, all documents and all document copies within a job. For example, with this extension, page 1 of a job could have a different media from the other pages in the job or document 2 of a job could be stapled while the other documents of the job are not. As another example, the first ten copies of a document could be printed on letter paper and stapled while the eleventh copy of the same document could be printed on transparencies with no staple.

This extension supports document overrides and page overrides by adding two new Job Template attributes: “document-overrides” and “page-overrides” -- both have a syntax type of “1setOf collection”. Each ‘collection’ value for “document-overrides” contains an attribute that identifies the overridden documents, namely “input-documents” or “output-documents”. The ‘collection’ value also contains one or more attributes that are overrides for the identified documents, e.g. “document-format”, “finishings”, and “media”. Each ‘collection’ value for “page-overrides” contains two attributes that identify the overridden pages, namely  “input-documents” or “output-documents” plus “pages”. The ‘collection’ value also contains one or more attributes that are overrides for the identified pages, e.g. “sides” and “media”. When the overrides apply to some but not all  document copies, the ‘collection’ value for “document-overrides” or “page-overrides” contains the attribute of “document-copies”.

This extension also supports subset finishing by adding a new Job Template attribute “pages-per-subset”, which specifies the number of pages per subset. The extension allows finishing and other document attributes to be applied to such subsets of pages.
This document is an IEEE-ISTO PWG Trial Use Standard.  For a definition of a "PWG Trial Use Standard", see:  ftp://ftp.pwg.org/pub/pwg/general/pwg-process.pdf.
NOTE: THIS SPECIFICATION IS A “TRAIL USE” STANDARD.  FUTURE VERSIONS OF THIS SPECIFICATION WILL DRAW ON IMPLEMENTATION EXPERIENCE AND MAY INTRODUCE INCOMPATIBLE CHANGES. 
Copyright (C) 2000, IEEE Industry Standards and Technology Organization. All rights reserved. 

This document may be copied and furnished to others, and derivative works that comment on, or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice, this paragraph and the title of the Document as referenced below are included on all such copies and derivative works.  However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the IEEE-ISTO and the Printer Working Group, a program of the IEEE-ISTO. 

Title:  Internet Printing Protocol (IPP): Override Attributes for Documents and Pages

The IEEE-ISTO and the Printer Working Group DISCLAIM ANY AND ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED INCLUDING (WITHOUT LIMITATION) ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 

The Printer Working Group, a program of the IEEE-ISTO, reserves the right to make changes to the document without further notice.  The document may be updated, replaced or made obsolete by other documents at any time. 

The IEEE-ISTO takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. 

The IEEE-ISTO invites any interested party to bring to its attention any copyrights, patents, or patent applications, or other proprietary rights which may cover technology that may be required to implement the contents of this document. The IEEE-ISTO and its programs shall not be responsible for identifying patents for which a license may be required by a document and/or IEEE-ISTO Industry Group Standard or for conducting inquiries into the legal validity or scope of those patents that are brought to its attention. Inquiries may be submitted to the IEEE-ISTO by e-mail at: 

ieee-isto@ieee.org.

The Printer Working Group acknowledges that the IEEE-ISTO (acting itself or through its designees) is, and shall at all times, be the sole entity that may authorize the use of certification marks, trademarks, or other special designations to indicate compliance with these materials. 

Use of this document is wholly voluntary.  The existence of this document does not imply that there are no other ways to produce, test, measure, purchase, market, or provide other goods and services related to its scope. 

Table of Contents
1	Introduction
2	Terminology
2.1	REQUIRED
2.2	OPTIONAL
2.3	Override-Extension
2.4	Sheet
2.5	Output-Page
2.6	Finished-Page Image
2.7	Impression
2.8	Input-Page
2.9	Input-Document
2.10	Output-Document
2.11	Output-Document-Copy
2.12	Relationship between Input-Document and Output-Documents
2.12.1	Degenerate Case
2.12.2	Separate Documents Case
2.12.3	Single Document Case
2.12.4	Page-Subset Document Case
2.12.5	Document-Subset Document Case
2.13	Document-Overrides
2.14	Page-Overrides
2.15	Subset-Finishing
2.16	Affects
2.17	Associates
2.17.1	Directly Associates
2.17.2	Effectively Associates
2.18	Job-Submission Operations
3	Requirements
4	Overview
4.1	Numbering of Components
4.2	Relationship of Numbered Components
4.2.1	Degenerate Case:
4.2.2	Separate-Documents Case:
4.2.3	Single-Document Case:
4.2.4	Page-Subset Document Case:
4.2.5	Document-Subset Document Case:
4.3	Association of Attributes
4.4	Effect of the “document-copies” attribute
4.5	Subset Finishing
5	New  Job Template Attributes
5.1	document-overrides (1setOf collection)
5.1.1	input-documents (1setOf rangeOfInteger (1:MAX))
5.1.2	output-documents (1setOf rangeOfInteger (1:MAX))
5.1.3	document-copies (1setOf rangeOfInteger (1:MAX))
5.1.4	document-format (mimeMediaType)
5.1.5	document-name (name (MAX))
5.1.6	compression (type3 keyword)
5.1.7	document-natural-language (naturalLanguage)
5.1.8	page-ranges (1setOf rangeOfInteger (1:MAX))
5.1.9	finishings (1setOf type2 enum)
5.1.10	sides (type2 keyword)
5.1.11	media (type3 keyword | name(MAX))
5.1.12	Handling of Error conditions
5.1.13	Why not “document-overrides-default”
5.1.14	document-overrides-supported (1setOf  type2 keyword)
5.2	page-overrides (1setOf  collection)
5.2.1	input-documents (1setOf rangeOfInteger (1:MAX))
5.2.2	output-documents (1setOf rangeOfInteger (1:MAX))
5.2.3	document-copies (1setOf rangeOfInteger (1:MAX))
5.2.4	pages (1setOf rangeOfInteger(1:MAX))
5.2.5	sides (type2 keyword)
5.2.6	media (type3 keyword | name(MAX))
5.2.7	Handling of Error conditions
5.2.8	Why not “page-overrides-default”
5.2.9	page-overrides-supported (1setOf  type2 keyword)
5.3	pages-per-subset (1setOf integer)
5.3.1	Why not “pages-per-subset-default”
5.3.2	pages-per-subset-supported (boolean)
6	New Job Description attributes
6.1	job-warnings-count (integer)
7	New Job Description Values
7.1	job-warnings-detected value for job-state-reasons (1setOf  type2 keyword)
8	Extended Role of Some Operation Attributes
9	Extensions to Printer Operations
9.1	Create-Job and Validate-Job Operation Requests
9.2	Send-Document and Send-URI Operation Requests
10	Examples
10.1	First Page of Single Document is Letterhead
10.1.1	Degenerate Case.
10.2	First Page of Several Documents is Blue
10.2.1	Separate-Documents Case.
10.2.2	Single-Documents Case
10.2.3	Page-Subset Documents Case
10.3	First Page is Blue and First Document is not stapled
10.3.1	Separate-Documents Case
10.3.2	Single-Documents Case
10.3.3	Page-Subset Documents Case
10.4	One document with 100 copies for distribution and one on transparencies.
10.4.1	First solution.
10.4.2	Second solution.
10.4.3	Third solution.
11	Conformance Requirements
12	IANA Considerations
12.1	Attribute Registration
12.2	Keyword Attribute Value Registrations
13	Internationalization Considerations
14	Security Considerations
15	References
16	Author's Addresses
17	Appendix A: Rules for Attribute Association
18	Appendix B: Summary of other IPP documents
19	Appendix C: Description of the IEEE Industry Standards and Technology (ISTO)
20	Appendix D: Description of the IEEE-ISTO PWG

1	
Introduction
The Internet Printing Protocol (IPP) is an application level protocol for distributed printing using Internet tools and technologies. IPP version 1.1 (IPP/1.1) requires that each attribute value be the same for all all pages, all documents and all document copies within a job. This document defines  OPTIONAL extensions to the IPP/1.1 model which relax this restriction and allow pages,  documents and document copies to have attributes that are overrides. For example, with this extension, page 1 of a job could have a different media or different value of “sides” from the other pages in the job, or document 2 of a job could be stapled while the other documents of the job are not. As another example, the first ten copies of a document could be printed on letter paper and stapled while the eleventh copy of the same document could be printed on transparencies with no staple. This document is a proposal for an extension to IPP/1.0 and IPP/1.1.

This extension supports document overrides and page overrides by adding two new Job Template attributes: “document-overrides” and “page-overrides” -- both have a syntax type of “1setOf collection”. Each ‘collection’ value for “document-overrides” contains 
a)	an attribute that identifies the overridden documents, namely “input-documents” or “output-documents”. 
b)	an OPTIONAL attribute that identifies the document copies of the specified overridden documents, i.e. “document-copies”.  If this attribute is absent, the overrides apply to all document copies. 
c)	one or more attributes that are overrides for the identified documents, e.g. “document-format”, “finishings”, and “media”. 

Each ‘collection’ value for “page-overrides” contains 
a)	an attribute that identifies the documents containing the overridden pages, namely  “input-documents” or “output-documents”. 
b)	an attribute that identifies the overridden pages, namely “pages”. 
c)	an OPTIONAL attribute that identifies the document copies of the specified documents, i.e. “document-copies”.  If this attribute is absent, the overrides apply to all document copies.
d)	The ‘collection’ value also contains one or more attributes that are overrides for the identified pages, e.g. “sides” and “media”.

This extension also supports subset finishing with a new Job Template attribute “pages-per-subset”, which specifies the number of pages per subset. The extension allows finishing and other document attributes to be applied to such subsets of pages.
2	Terminology
This section defines the following additional terms that are used throughout this document:
2.1	REQUIRED
If an implementation supports the extensions described in this document, it MUST support a REQUIRED feature.
2.2	OPTIONAL
If an implementation supports the extensions described in this document, it MAY support an OPTIONAL feature.
2.3	Override-Extension
The Override-Extension is the extension proposed in this document that adds attribute overrides for documents and pages. This extension supports Document-Overrides, Page-Overrides and Subset-Finishing, which are all defined later in this section.
2.4	Sheet
A Sheet is the unit of media that a printer puts marks on. It is the most basic unit of output from a printer. A printer may mark on one side or on both sides of a sheet.
2.5	Output-Page
An Output-Page is the set of all markings that the author intended to be placed on one side of a Sheet, including, but not limited to, text, drawings, images, footers and headers. 
2.6	Finished-Page Image
The single image on a Finished Page. A Finished Page is one side of a sheet in a finished document, i.e., one side of a sheet as perceived by a person after any cutting, folding, and/or booklet making (see section Error! Reference source not found.). The lay term for Finished Page is 'page'.

A Finished-Page Image contains on the images of one or more Output-Pages. Generally a Job submitter prints each Output-Page as the author intended, namely one Output-Page per Finished-Page Image. Sometimes, a Job submitter prints several Output-Pages per Finished-Page Image, perhaps to save paper or money. The IPP attribute “number-up” specifies the number of Output-Pages per Finished-Page Image.  When “number-up” is greater than 1, a Finished-Page Image contains multiple Output-Pages.

2.7	Impression
An impression is the set of all markings that the Job submitter intended to be placed on one side of a Sheet. Each impression contains one or more Finished-Page Images. Each impression contains a single Finished-Page Image unless an imposition operation is applied to the Finished-Page Images. 
2.8	Input-Page
An Input-Page is a sequence of bytes that describe how to mark a single Output-Page. IPP 1.1 [RFC2911] uses the term “print-stream-pages” to refer to both Input-Pages and Output-Pages. There is a one to one relationship between Input-Pages and Output-Pages and they are in the same order. Both Input-Pages and Output-Pages are numbered sequentially (see section 4.1) starting from 1 at the beginning of each Input-Document or Output-Document, respectively. When the first Input-Page of an Input-Document coincides with the first Output-Page of an Output-Document, the numbering of Input-Pages and Output-Pages coincides; otherwise it doesn’t.
2.9	Input-Document
An Input-Document is the entire sequence of bytes transmitted as the Document Content in the Print-Job and Send-Document operations or referenced by the "document-uri" operation attribute in the Print-URI and Send-URI operations.  This sequence of bytes consists of one or more Input-Pages. 
2.10	Output-Document 
An Output-Document is a set of one or more Sheets which either are permanently bound into a single unit, e.g. with a staple, or are intended to be treated by an end-user as a single unit, e.g. for a loose leaf binder. If an Output-Document is bound, it is uniformly bound; if it is not bound, no subset of sheets within it are bound. The Output-Pages that comprise an Output-Document may come from

a)	all the Input-Pages of an Input-Document or 
b)	a proper subset of the Input-Pages of the Input-Document or 
c)	all the Input-Pages of several Input-Documents. 

An Output-Document is not a set of sheets that are bound temporarily for shipping, e.g. with banding.
2.11	Output-Document-Copy
When a Printer produces more than one or more copies of an Output-Document, each copy is called an Output-Document-Copy. Sometimes this specification uses the phrase “copy of Output-Document” to emphasize “copy”, but the phrase is equivalent to “Output-Document-Copy”.
2.12	Relationship between Input-Document and Output-Documents
Each relationship is named and defined below. The cases are derived from an analysis of possible tree structures (see section 4.2). A client selects the desired case with the number of submitted Input-Documents and the specific values of three attributes: the existing Job Template “multiple-document-handling” and two new attributes “pages-per-subset” and “documents-per-subset”.  The latter two attributes describe how the stream of  Input-Pages or Input-Documents and are partitioned into Output-Documents, respectively.   

In this section, the number of copies produced for each Output-Document does not affect the discussion, so it is easiest to assume that the number is 1.

The table below summarizes the relationship of Input-Documents to Output-Document in the five cases:

Case	Number of	
	Input-Documents	Output-Documents	
Degenerate	1	1	
Separate-Documents	n 	n	
Single-Document	n 	1	
Page-Subset Documents	n 	m (m >n)	
Document-Subset Documents	n 	m (m < n)	

When n = 1 for the “Separate-Documents” and “Single-Document” become the “Degenerate” case.

The table below summarizes the attribute values that control the cases.

-	The “separate” value means that “multiple-document-handling” is  'separate-documents-collated-copies' or 'separate-documents-uncollated-copies'.
-	The “single” value means that “multiple-document-handling” is 'single-document' or 'single-document-new-sheet'.
-	The “ignored” value means that the attribute need not be present and is ignored if it is present,
-	The “present” value means that the attribute must be present. A different case is implied if it is not present.
-	The “not present” value means that the attribute must not be present. A different case is implied if it is present.

Case	“multiple-document-handling”	“pages-per-subset”	“documents-per-subset”	
Separate-Documents	separate	not present	not present	
Single-Document	single	ignored	ignored	
Page-Subset Documents	separate	present	not present	
Document-Subset Documents	separate	not present	present	

The Degenerate row is omitted because it follows the rules for the “Separate-Documents” and “Single-Documents” rules when the number of Input-Documents is 1.

There is an error if both “pages-per-subset” and “document-per-subset” are present in the “separate” case. 
2.12.1	Degenerate Case
In the Degenerate Case, the Job consists of exactly one Output-Document and exactly one Input-Document. The single Input-Document produces the single Output-Document. This case represents the most common case of printing. For example, if a user is Printing a single MS Word file, the MS Word file is the Input-Document and the printed pages are the Output-Document. This case is the degenerate case of Separate-Documents and Single-Document. It occurs when the number of Input-Documents is 1 and either

a)	“multiple-document-handling” is  'separate-documents-collated-copies' or 'separate-documents-uncollated-copies' and neither “pages-per-subset” nor “documents-per-subset” are present or. 
b)	“multiple-document-handling” is 'single-document' or 'single-document-new-sheet', and both “pages-per-subset” and “documents-per-subset” are ignored if present
2.12.2	Separate Documents Case
In the Separate Documents Case, the Job consists of one or more Output-Documents where each Input-Document produces one Output-Document. For example, if a user prints 10 Java files in one Job and wants 10 separately stapled Output-Documents, each of the 10 Java files is an Input-Document, and the printed Output-Pages from each of the 10 Java files is a separate Output-Document that is stapled separately. This case occurs when “multiple-document-handling” is  'separate-documents-collated-copies' or 'separate-documents-uncollated-copies' and the new attributes “pages-per-subset” and “documents-per-subset” are not present.
2.12.3	Single Document Case 
In the Single Document Case, the job consists of a single Output-Document produced from one or more Input-Documents. For example, if a user prints 10 Java files in one Job and wants all Output-Pages of the 10 Java files to be produced as 1 stapled Output-Document, then each of the 10 Java files is an Input-Document, and all printed Output-Pages from all of the 10 Java files is a single Output-Document that is stapled. This case occurs when “multiple-document-handling” is 'single-document' or 'single-document-new-sheet'; the value of “pages-per-subset” and “documents-per-subset” are both ignored if present. 
2.12.4	Page-Subset Document Case
In the Page-Subset Case, the Job consists of one or more Output-Documents and one or more Input-Documents. The new attribute “pages-per-subset” contains a sequence of integers which specifies how to partition the stream of Input-Pages into subsets, each of which produces an Output Document. For example, if a user prints 1 PostScript file with 1000 pages, where each 4 Output-Pages represents an insurance policy, then the PostScript file is the Input-Document and each group of 4 Output-Pages is an Output-Document. The resulting Output-Documents would be the same if the same 1000 Input-Pages were spread across 2 or more PostScript files. This case occurs when “multiple-document-handling” is 'separate-documents-collated-copies' or 'separate-documents-uncollated-copies' and the new attribute “pages-per-subset” contains 1 or more integer values. The new attribute “documents-per-subset” is not present.
2.12.5	Document-Subset Document Case
This case is defined here for completeness, but it is not supported by this extension. 

In the Document-Subset Document Case, the Job consists of one or more Output-Documents and one or more Input-Documents. The new attribute “documents-per-subset” contains a sequence of integers which specifies how to partition Job’s Input-Documents into subsets, each of which produces an Output Document. For example, if a user prints 25 Java files in one Job and wants 2 separately stapled Output-Documents, one with 15 Java files and one with 10 Java files, then each of the Java files is an Input-Document, and the printed Output-Pages from the first 15  Java files and next 10 Java files are two separate Output-Documents that are stapled separately. This case occurs when “multiple-document-handling” is 'separate-documents-collated-copies' or 'separate-documents-uncollated-copies' and “documents-per-subset” contains 1 or more integer values. The new attribute “pages-per-subset” is not present.

2.13	Document-Overrides
In IPP/1.1 each attribute value is the same for the entire Job.  When an attribute is a “Document-Overrides” attributes, it is different for identified Input-Documents or Output-Documents.
2.14	Page-Overrides
In IPP/1.1 each attribute value is the same for the entire Job.  When an attribute is a “Page-Overrides” attributes, it is different for identified Input-Pages or Output-Pages.
2.15	Subset-Finishing
Subset-Finishing is the ability to subdivide the stream of Input-Pages from one or more Input-Documents into multiple Output-Documents and to apply the same or different finishing to each individual Output-Document.
2.16	Affects
Each attribute is said to ‘affect’ some part of a job. For example, “media” affects a sheet, “finishings” affects an Output-Document, “page-ranges” affects an Input-Document and “job-priority” affects a job. This nuance must be explicit in the Overrides-Extension because the parts of a job that an attribute affects limit the parts of a job that an attribute can be associated with (see the next section for a definition of “associates”). For example, “job-priority” affects a job; so it can be associated with a Job, but not an Input-Document or Input-Page. Likewise, “finishings” affects an Output-Document; so it can be associated with a Job or an Output-Document, but not with an Output-Page.
2.17	Associates 
The word “associates” combines the meaning of the two terms in subsections of this section, namely “directly associates” and “effectively associates”. When an attribute is either directly associated or effectively associated with some part of a job, it is said to be “associated” with that part of a job.
2.17.1	Directly Associates
When an attribute is said to be ‘directly associated’ with some part of a job, it affects that part or some other part. The part that it affects depends on the attribute and what the attribute is directly associated with. For example if “media” is directly associated with a job, it affects all sheets in the job. If “media” is directly associated with an Output-Document, it affects all sheets in that Output-Document. If  “media” is directly associated with an Output-Page, it affects the sheet containing that Output-Page.
2.17.2	Effectively Associates
When an attribute is said to be directly associated with some part of a job ‘A’ that is semantically connected with another part ‘B’, the attribute is said to be “effectively associated” with ‘B’. For example, in the Separate-Documents Case, when an attribute is directly associated with an Input-Document, it is effectively associated with the corresponding Output-Document.
2.18	Job-Submission Operations
The Job-Submission Operations are the IPP operations that create jobs and send document content, namely Print-Job, Print-URI, Create-Job, Send-Document and Send-URI.
3	Requirements
The following is a list of requirements for the Overrides-Extension.

1.	The Override-Extension MUST contain a mechanism for specifying Job attributes that are overrides for particular Input-Documents or Output-Documents. A Printer and a client OPTIONALLY support this mechanism.
2.	There MUST be a mechanism for specifying Job attributes that are overrides for particular Input-Pages or Output-Pages. A Printer and a client OPTIONALLY support this mechanism.
3.	There MUST be a mechanism for specifying Job attributes that are overrides for particular document copies of Output-Documents. A Printer and a client OPTIONALLY support this mechanism.
4.	The mechanism for overrides MUST be supported by all Job-Submission operations and Validate-Job.
5.	The extension MUST support the four relationships of Input-Documents and Output-Documents: Degenerate Case, Separate-Documents Case, Single-Document Case and Page-Subset Document Case.
6.	The extension MUST support Subset-Finishing.
4	Overview
In IPP 1.1 all attributes that a client includes with job creation operations affect the entire Job in a uniform way. That is, there is no way for one Output-Document in a given Job to be stapled and another drilled. Also, there is no way for the first sheet of each Output-Document to be on a different media or to have a different value of “sides” from the other Sheets in the Output-Document. In addition, there is no way for one document copy to be printed on paper and another on transparencies. An IPP/1.1 client can specify features, such as finishing, media and sides only at the job level.

The Override Extension defined in this document allows some Output-Pages, some Output-Documents and some Input-Documents to be affected by attribute values that are overrides to those specified for the Job as a whole. For example, the first Output-Page of an Output-Document has a different media from the rest, or the second Output-Document is stapled and the rest are not, or the page-ranges of the first Input-Document selects a few Input-Pages and the rest of the Input-Documents are printed in full, or one copy of an Output-Document has a different media from the rest.
4.1	Numbering of Components
The Override Extension defines a system for numbering of components. 

-	Each Input-Document has a number. The single Input-Document that a client sends with Print-Job or Print-URI and the first Input-Document that a client sends with Send-Document or Send-URI has a number of  1. Each subsequent Input-Document that a clients sends has a number that is one higher than the previous.  
-	Each Input-Page in an Input-Document is numbered sequentially, starting at 1 for the first Input-Page. If a Job has several Input-Documents, the first Input-Page of each Input-Document has the number of 1, which is relative to that Input-Document.
-	Each Output-Document has a number. The first Output-Document has a number of ‘1’, and each subsequent Output-Document has a number that is one higher than the previous Output-Document. The Output-Documents are numbered as if the value of “copies” were 1, i.e. if an Input-Document produces multiple copies, each copy of a particular Output-Document has the same number. 
-	Each Output-Page in an Output-Document is numbered sequentially, starting at 1 for the first Output-Page. If a Job has several Output-Documents, the first Output-Page of each has the number of 1, which is relative to that Output-Document
-	Each copy of an Output-Document has a number. The first copy of each Output-Document has a number of ‘1’, and each subsequent copy has a number that is one higher than the previous copy. If a job has multiple Output-Documents, the first copy of each has a number of  ‘1’.
4.2	Relationship of Numbered Components
The previous section described how to number Input-Documents, Output-Documents, Input-Pages and Output-Pages. This section describes the relationship between the number on each of these four components. The relationship differs for each of the five cases defined in section 2.11. The following diagrams of tree structure show each of the five cases and the relationship of the numbers in those cases.

These diagrams assume that the number of copies of Output-Documents is 1. When the number of copies exceeds 1, some parts of these diagrams would have further replication, but the numeric relationships of the four displayed components would not change. 

4.2.1	Degenerate Case: 

						Job &
					Input-Document 1 &	
					Output-Document 1	
						|
      			---------------------			
				|		...		|			
Input-Page 1 &	   Input-Page n &	 
Output-Page 1	   Output-Page n 	 

Conditions that define this case:

-	Job contains exactly 1 Input-Document
-	Either conditions for “Separate-Documents” or “Single-Documents” are met.
Observations about  this case: 

-	Job coincides with Output-Document 1 and Input-Document 1
-	Output-Page i coincides with Input-Page i
4.2.2	 Separate-Documents Case:

						Job
				 		 |
               -------------------------------------------------
			|			 			|                 |
     	Input-Document 1 &			Input-Document 2 &    ...
		Output-Document 1			Output-Document 2
			|						|
      --------------------			---------------------
	|		...		|			|		...		|
Input-Page 1 &	   Input-Page n &	 Input-Page 1 &	Input-Page p
Output-Page 1	   Output-Page n 	 Output-Page 1		Output-Page p

Conditions that define this case:

-	Job contains more than one or more Input-Documents, though one Input-Document is technically the Degenerate Case.
-	“multiple-document-handling” is  'separate-documents-collated-copies' or 'separate-documents-uncollated-copies' 
-	 “pages-per-subset” is not present
-	“documents-per-subset” is not present
Observations about  this case: 

-	Output-Document i coincides with Input-Document i
-	Output-Page i coincides with Input-Page i
 
4.2.3	Single-Document Case:

				Job & Output Document 1
				 		 |
               -----------------------------------------------
			|			 			|               |
     	Input-Document 1			Input-Document 2    ...
			|						|
      --------------------			---------------------
	|		...		|			|		...		|
Input-Page 1 &	   Input-Page n &	 Input-Page 1 &	Input-Page p
Output-Page 1	   Output-Page n 	 Output-Page n+1	Output-Page n+p

Conditions that define this case:

-	Job contains more than one or more Input-Documents, though one Input-Document is technically the Degenerate Case.
-	 “multiple-document-handling” is 'single-document' or 'single-document-new-sheet'; 
Observations about  this case: 

-	Output-Document 1 coincides with the Job
-	The numbering of Output-Pages is continuous through all Input-Documents, but the numbering of Input-Pages starts at 1 in each Input-Document. That is, Input-Page i in Input-Document m coincides with Output-Page i + k, where k is the number of Input-Pages in all previous Input-Documents, i.e. Input-Documents 1 through m-1.
-	 “pages-per-subset” is ignored if present
-	“documents-per-subset” is ignored if present

4.2.4	Page-Subset Document Case:

						Job
				 		 |
               -------------------------------
			|			...			|
     	Input-Document 1 			Input-Document q 
			|							   |
			|							   |
		   ----------------------------		  -----------
		   |			...			|   		  |    ...
	Output-Document 1		Output-Document m	Output-Document r
		|						|					|
      --------------------			----------------	  similar
	|		...		|			|		...	|
Input-Page 1 &	   Input-Page n &	 Input-Page 1+k &	Input-Page p+k
Output-Page 1	   Output-Page n 	 Output-Page 1		Output-Page p

Conditions that define this case:

-	Job contains one or more Input-Documents
-	“multiple-document-handling” is  'separate-documents-collated-copies' or 'separate-documents-uncollated-copies' 
-	“pages-per-subset” is present.
-	“documents-per-subset” is not present
Observations about  this case: 

-	The diagram shows that Output-Documents 1 through m are contained in Input-Document 1, and Output-Documents m+1 through t are contained in Input-Document 2 and so on. However, this diagram is not completely accurate. The Input-Pages from all Input-Documents are more accurately viewed as a continuous stream of Input-Pages that are partitioned into Output-Documents as specified by the attribute “pages-per-subset”. For example, an Output-Document could come from the last 3 Input-Pages of an Input-Document and the first 4 Input-Pages of the next Input-Document.
-	The Input-Pages in each Input-Document are numbered sequentially starting from 1 and the Output-Pages in each Output-Document are numbered sequentially starting from 1. For the first Output-Document, the numbers of  the Input-Pages and Output-Pages coincide. For subsequent Output-Documents, the numbers differ. For example, the first Output-Page of the second Output-Document coincides with Input-Page w, where w is the number of Output-Pages in the first Output-Document. To be specific, Output-Page i in Output-Document m coincides with Input-Page i + k of the Job, where k is the number of Output-Pages in all previous Output-Documents of the job, e.g. Output-Documents 1 through m-1. 
-	“pages-per-subset” specifies the number of pages in each Output-Document.
 
4.2.5	Document-Subset Document Case:

NOTE: this case is here for completeness and is not supported by the Overrides-Extension.

						Job
				 		 |
               -------------------------------
			|			...			|
     	Output-Document 1 			Output-Document q 
			|							   |
			|							similar
		   ---------------------------------
		   |							|
		Input-Document 1			Input-Document m
		|							|
      --------------------			---------------------
	|		...		|			|		...		|
Input-Page 1 &	   Input-Page n &	 Input-Page 1 &	Input-Page p
Output-Page 1	   Output-Page n 	 Output-Page 1+k	Output-Page p+k

Conditions that define this case:

-	Job contains one or more Input-Documents
-	“multiple-document-handling” is  'separate-documents-collated-copies' or 'separate-documents-uncollated-copies' 
-	“pages-per-subset” is not present.
-	“documents-per-subset” is present
Observations about  this case: 

-	Input-Documents 1-m are contained in Output-Document 1, and Input-Documents m+1 through t are contained in Output-Document 2 and so on.
-	Input-Page i in Input-Document m coincides with Output-Page i + k of Output-Document j, where k is the number of Input-Pages in all previous Input-Documents of Output-Document j, e.g. Input-Documents 1 through m-1.
-	 “documents-per-subset” has the number of Input-Documents in each Output-Document.
4.3	Association of Attributes
The Override Extension allows attribute associations with Input-Pages, Output-Pages, Input-Documents and Output-Documents, and it continues to allow associations with Jobs. The Override Extension specifies rules for associations, and it categorizes attributes according to what they affect. The categories of attributes and the members in the Overrides-Extension are:

-	Input Documents: “page-ranges”, “document-format”, “document-name”, “compression” and “document-natural-language”.
-	Output-Documents: “finishings”
-	Sheets: “media” and “sides”
The table below shows what each of the three categories of attributes can be associated with:

	Category of attribute	
Associates with:	Input-Document	Output-Document	Sheets	
Input-Document	yes	yes	yes	
Output-Document	no	yes	yes	
Input-Page	no	no	yes	
Output-Page	no	no	yes	

The meaning of these associations and their limitation is specified in section 17. 

The Override-Extension mechanism seems to be general enough to add new Document-Overrides and Page-Overrides attributes without changing or extending the general mechanism. That is, an existing or new Job attribute becomes a Document-Overrides or Page-Overrides attribute when a description of that attributes says so, but no changes need be  made to the ways overrides work. If the new attribute belongs to one of the three above categories, it follows the rules of that category. If it belongs to a new categories, the rules of association must be defined.
4.4	Effect of the “document-copies” attribute
The “document-copies” attribute causes some copies of a document to be printed differently from others. For example, 10 copies are duplex printed on letter paper with a staple. One copy is simplex printed on transparencies without a staple. As another example, the first page of 100 copies of a 3 page document are printed on letterhead paper and the first page of  the 101st  copy of the document is printed on regular letter paper.

If an attribute can affect an Output-Document, it can affect particular Output-Document-Copies. If an attribute can affect Sheets, it can affect Sheets of particular Output-Document-Copies.

Normally, when an attribute is associated with Input-Documents, Output-Documents, Input-Pages or Output-Pages, that attribute is effectively associated with corresponding Input-Documents, Output-Documents or Sheets. When an association includes the “document-copies” attribute, it has the following meaning for each effective association. If the attribute effectively associates with:

-	Input-Documents, the Printer ignores the “document-copies” attribute.
-	Output-Documents, the attribute affects the specified copies of the Output-Documents. 
-	Sheets: the attribute affects the sheets of the specified copies of Output-Documents.
4.5	Subset Finishing
In IPP/1.1 a Printer applies the “finishings” attribute to all Output-Documents in a given job.  This proposal supports “Subset Finishing” which we define as the ability to partition the Input-Pages of an Input-Document into one or more Output-Documents and to apply different types of finishing to each of the individual Output-Documents contained within a single job.

This model supports subset finishing with the new attribute “pages-per-subset” which specifies the number of Input-Pages per Output-Document. This model treats Subset-Finishing as a Job level sub-setting of the Input-Documents into Output-Documents and as a Document Override attribute rather than a Page Override attribute for two reasons.

-	Page-Overrides, as their name suggests, are overrides for a few Input-Pages or Output-Pages that differ from the rest of the Input-Pages or Output-Pages in the Job. With Subset-Finishing, all Input-Pages belong to some subset. So, sub-setting is not an override; it encompasses the entire Job. Only the finishing part of Subset-Finishing can have overrides and those overrides apply to a subset, much like they apply to Output-Documents.  Because subsets behave like Output-Documents, it is easiest to describe the sub-setting operation as creating Output-Documents.
-	If the attributes “media”, “sides” and “finishings” were all treated as Page-Override attributes, then there would have to one rule for splitting and merging groups when “finishings” is associated with the group and another rule when it is not associated with the group.  If a Page-Override specifies “sides” is duplex for pages 1-10 and “media” is added to pages 5 and 6, there can be three Page-Override groups, one for pages 1-4 with “sides”, one for pages 5 and 6 with “sides” and “media” and one for pages 7-10 with sides. If “media” is removed, the groups can be merged back to the original single group.  If “finishings = staple” had been  present in the original group of pages 1-10, such a split would change finishing from one staple in pages 1-10 to 3 staples, one in pages 1-6, one in page 5-6 and one in pages 7-10.

The remainder of this document describes the changes necessary to support the Overrides Extension.
5	New  Job Template Attributes 
The Override Extension adds three new Job Template attributes: “document-overrides”,   “page-overrides” and “pages-per-subset”. The first two attributes support override attributes, and the third supports subset finishing.

  +===================+======================+======================+
  | Job Attribute     |Printer: Default Value|  Printer: Supported  |
  |                   |   Attribute          |   Values Attribute   |
  +===================+======================+======================+
  | document-         |       none           |document-overrides-   |
  |    overrides      |                      |   supported          |
  |(1setOf collection)|                      |(1setOf type2 keyword)|
  +===================+======================+======================+
  | page-overrides    |       none           | page-overrides-      |
  |                   |                      |   supported          |
  |(1setOf collection)|                      |(1setOf type2 keyword)|
  +===================+======================+======================+
  | pages-per-subset  |       none           | pages-per-subset     |
  |                   |                      |   supported          |
  |(1setOf integer)   |                      |   (boolean)          |
  +===================+======================+======================+

5.1	document-overrides (1setOf collection) 
This OPTIONAL Job Template attribute contains attributes that are associated with Input-Documents and Output-Documents and that are treated as document overrides. Such attributes are called “Document-Overrides” attributes. The remainder of this section describes features that an implementation MUST support or MAY support if an implementation supports this attribute.

If this attribute is not present in a Job, there are no Document-Overrides within the Job. If it is present, the value consists of one or more ‘collection’ values, where each ‘collection’ value identifies one or more Input-Documents or Output-Document and contains one or more Job Template attributes which act as overrides to the corresponding Job Template attribute values for the specified Input-Documents or Output-Documents.

The first attribute of each ‘collection’ value MUST be either “input-documents” or “output-documents” and this attribute identifies Input-Documents or Output-Documents, respectively. The second attribute of each ‘collection’ MAY be “document-copies” and this attribute identifies the Output-Document-Copies. The remaining attributes in the ‘collection’ value are the one or more Job Template attributes that are overrides for the specified Input-Documents or Output-Documents. The allowed attributes are listed in section 5.1.8
There may be more than one way for a client to arrange Document-Overrides attributes in ‘collection’ values. For example, if a job contains 10 Output-Documents to be printed 1-sided on letter paper with no stapling and Output-Document 1 is to be two sided  with stapling and Document 2 is to be two sided with no stapling, there are two possible ways to group the overrides.  The client could specify the two overrides for Output-Document 1 in one ‘collection’ value and the single override for Output-Document 2 in a second ‘collection’ value, or it could specify “two-sided” for Output-Documents 1 and 2 in one ‘collection’ value and “stapled” for Output-Document 1 in another ‘collection’ value. 
If the “input-documents”, “output-documents” or “document-copies” identify Input-Documents, Output-Documents or Output-Document-Copies that don’t exist, the Printer silently ignores them and associates the Document-Overrides with those Input-Documents, Output-Documents or Output-Document-Copies that do exist. A client MUST NOT allow two ‘collection’ values to be associated with the same Input-Document, Output-Document or Output-Document-Copy and to contain the same Document-Overrides attribute with different values. If the client violates the preceding rule, the Printer can use either value, and it MUST issue a warning. It does so by adding ‘job-warnings-detected’ to the “job-state-reasons” and by increasing the value of  the “job-warnings-count” Job Description attribute by 1.  If the Printer detects this conflict while it is processing a Job-Submission operation, it MUST return the ignored values in the Unsupported attributes.
When a Client receives this attribute in a Get-Jobs or Get-Job-Attributes, the value MUST contain the same ‘collection’ values received in Job-Submission operations, except for those ‘collection’ values the Printer returned in the Unsupported Attributes. 
Each ‘collection’ value of this attribute has either of the two forms as defined below. The ‘collection’ values NEED NOT all be of the same form.
For the first form, the client MUST supply “input-documents” as the first attribute. If the client supplies the “document-copies” attribute, it MUST be the second attribute. The client OPTIONALLY supplies the remaining attributes in any order. If the Printer supports the Create-Job operation, then it MUST support the attribute labeled with “CMUST” below; otherwise support is OPTIONAL.
Attribute name	syntax	In request	Printer Support	
input-documents	1setOf rangeOfInteger(MAX)	MUST	MUST	
document-copies	1setOf rangeOfInteger(MAX)	MAY	MAY	
document-format	mimeMediaType	MAY	CMUST	
document-name	name (MAX)	MAY	CMUST	
compression 	type3 keyword	MAY	CMUST	
document-natural-language	naturalLanguage	MAY	MAY	
page-ranges	1setOf rangeOfInteger (1:MAX)	MAY	MAY	
finishings	1setOf type2 enum	MAY	MAY	
sides	type2 keyword	MAY	MAY	
media	type3 keyword | name(MAX	MAY	MAY	
For the second form, the client MUST supply “output-documents” as the first attribute. If the client supplies the “document-copies” attribute, it MUST be the second attribute. The client OPTIONALLY supplies the remaining attributes in any order.
Attribute name	syntax	In request	Printer Support	
output-documents	1setOf rangeOfInteger(MAX)	MUST	MUST	
document-copies	1setOf rangeOfInteger(MAX)	MAY	MAY	
finishings	1setOf type2 enum	MAY	MAY	
sides	type2 keyword	MAY	MAY	
media	type3 keyword | name(MAX)	MAY	MAY	
The following sections describe each member attribute in the above tables.
5.1.1	input-documents (1setOf rangeOfInteger (1:MAX))
This attribute identifies one or more Input-Documents by specifying a range of numbers (see section 4.1 for the rules on associating a number with each Input-Document ). The Document-Overrides apply to the identified Input-Documents.

A Printer MUST support this attribute. A client MUST supply this attribute in each ‘collection’ value and it MUST be the first attribute of each ‘collection’ value. If this attribute is present, then the client MUST NOT supply  “output-documents”. 

When a client supplies this attribute in a “document-overrides” attribute of a Send-Document or Send-URI request, this attribute MUST NOT identify Input-Documents which were sent in an earlier operation.  If a Printer receives such a value in a ‘collection’ value, it MUST treat all attribute values in such a ‘collection’ value, but not other sibling ‘collection’ values, as unsupported values and return the entire collection value in the Unsupported Attributes group.

Note: because the Printer silently ignores values that reference non-existent Input-Documents, a value of ‘MAX’ is equivalent to the number of Input-Documents.

See section 5 for details of usage of this attribute.

There is no “input-documents-supported” attribute, since the member attribute MUST be supported and for the full range.

5.1.2	output-documents (1setOf rangeOfInteger (1:MAX))
This attribute identifies one or more Output-Documents by specifying a range of numbers (see section 4.1 for the rules on associating a number with each Output-Document). The Document-Overrides apply to the identified Output-Documents.
A Printer MUST support this attribute. A client MUST supply this attribute in each ‘collection’ value and it MUST be the first attribute of each ‘collection’ value. If this attribute is present, then the client MUST NOT supply “input-documents”. 

When a client supplies this attribute in a “document-overrides” attribute of a Send-Document or Send-URI request, this attribute MUST NOT identify Output-Documents whose first Input-Page was sent in an earlier operation. If a Printer receives such a  value in a ‘collection’ value, it MUST treat all attribute values in such a ‘collection’ value, but not other sibling ‘collection’ values, as unsupported values and return the entire collection value in the Unsupported Attributes group.

Note: because the Printer silently ignores values that reference non-existent Output-Documents, a value of ‘MAX’ is equivalent to the number of Output-Documents.

There is no “output-documents-supported” attribute, since the member attribute MUST be supported and for the full range.
5.1.3	document-copies (1setOf rangeOfInteger (1:MAX))
This attribute identifies one or more Output-Document-Copies by specifying a range of numbers. The Document-Overrides apply to the identified Output-Document-Copies within Output-Documents specified either directly by “output-documents” or indirectly by “input-documents” (see section 17 for further details).
A Printer MAY support this attribute. A client MAY supply this attribute in each ‘collection’ value. If the client supplies this attribute, it MUST be the second attribute of each ‘collection’ value. If this attribute is present, then the client MUST also supply “input-documents” or “output-documents”.
If the first member attribute is “input-documents”, this attribute applies only to the other member attributes that affect Output-Documents and Sheets. The Printer MUST ignore this attribute for the other member attributes that affect Input-Documents. 
Note: because the Printer silently ignores values that reference non-existent copies, a value of ‘MAX’ is equivalent to the number of copies.

There is no “document-copies-supported” attribute, since the full range MUST be supported, if the “document-copies” member attribute is supported.
5.1.4	document-format (mimeMediaType)
This attribute has the same meaning as in IPP/1.1. It indicates the document-format for one or more specified Input-Documents. The Printer MUST support this attribute. A client OPTIONALLY supplies it. 
5.1.5	document-name (name (MAX))
This attribute has the same meaning as in IPP/1.1. It indicates the document-name for one or more specified Input-Documents. The Printer MUST support this attribute. A client OPTIONALLY supplies it. 
5.1.6	compression (type3 keyword)
This attribute has the same meaning as in IPP/1.1.  It indicates the compression for one or more specified Input-Documents. The Printer MUST support this attribute. A client OPTIONALLY supplies it. 
5.1.7	document-natural-language (naturalLanguage)
This attribute has the same meaning as in IPP/1.1.  It indicates the document-natural-language for one or more specified Input-Documents. The Printer MAY support this attribute. A client OPTIONALLY supplies it. 
5.1.8	page-ranges (1setOf rangeOfInteger (1:MAX))
This attribute has the same meaning as in IPP/1.1. It redefines each Input-Document to contain only the specified Input-Pages.  See section 5.2.3 for how this attribute interacts with “pages”. The “multiple-document-handling” attribute affects the algorithm for numbering Input-Pages when this attribute is a Job attribute but when it is a Document-Override attribute.  When this attribute is a Document-Override attribute, the values of the “page-ranges” attribute specify the Input-Pages to select from each of the identified Input-Documents separately,  For example, if this attribute has the value “3:5” and is associated with two Input-Documents A and B, Input-Document A redefined to contain just two pages: 3 and 5, and Input-Document B also contains just pages 3 and 5. The Printer MAY support this attribute. A client OPTIONALLY supplies it. 

See section 5.2.4 for details of how this attribute affects number of pages with the “pages” attribute.
5.1.9	finishings (1setOf type2 enum) 
This attribute has the same meaning as in IPP/1.1.  It indicates the finishings for one or more specified Output-Documents. As a Job Template attribute, it affects each Output-Document produced by the Job. For example, all the sheets of each Output-Document are stapled together. As a Document-Overrides attributes, it affects only the specified Output-Documents. The Printer MAY support this attribute. A client OPTIONALLY supplies it.
The next section gives further information about this attribute, but this information is the same for all Output-Document attributes that might be added later.
5.1.9.1	Common Behavior for Output-Document Attributes
This attribute is directly associated with an Input-Document or Output-Document. This means that it  is effectively associated with one or more Output-Documents according to the rules of section 17, and this attribute affects those Output-Documents. 

If the “document-copies” attribute is present, the attribute affects only the specified copies of the Output-Documents.
5.1.10	sides (type2 keyword) 
This attribute has the same meaning as in IPP/1.1.  It indicates the sides for one or more specified Output-Pages. As a Job Template attribute, it affects each Sheet produced by the Job. As a Document-Overrides attributes, it affects only the specified Sheets. The Printer MAY support this attribute. A client OPTIONALLY supplies it.
The next section gives further information about this attribute, but this information is the same for all Sheet attributes, including “media” which is discussed in section 5.1.11
5.1.10.1	Common Behavior for Sheet Attributes
This attribute is directly associated with an Input-Document or Output-Document. This means that it is effectively associated with one or more Output-Pages according to the rules of section 16, and this attribute affects the Sheets containing the specified Output-Pages.
If the “document-copies” attribute is present, the attribute affects only the Output-Pages in the specified copies of the Output-Documents.
Because this attribute affects a Sheet, but is effectively associated with an Output-Page, a Sheet that contains two or more Output-Pages may have conflicting values of this attribute. This observation leads to two rules, one for the first Output-Page that this attribute is effectively associated with and one for the last Output-Page that this attribute is effectively associated with.
a)	For the first Output-Page:  if the value of this attribute is effectively associated with Output-Page i, and if Output-Page i is not the first Output-Page contained on a Sheet and if the value of this attribute differs from the value of this attribute for the preceding Output-Page i-1, then Output-Page i MUST start a new Sheet and the Printer MUST issue a warning by adding ‘job-warnings-detected’ to the “job-state-reasons” and by increasing the value of  the “job-warnings-count” Job Description attribute by 1. 
b)	For the last Output-Page:  if the value of this attribute is effectively associated with Output-Page i, and if Output-Page i is not the last Output-Page contained on a Sheet and if the value of this attribute differs from the value of this attribute for the following Output-Page i+1, then Output-Page i+1 MUST start a new Sheet and the Printer MUST issue a warning by adding ‘job-warnings-detected’ to the “job-state-reasons” and by increasing the value of  the “job-warnings-count” Job Description attribute by 1.
5.1.11	media (type3 keyword | name(MAX)) 
This attribute has the same meaning as in IPP/1.1.  It indicates the media for one or more specified Output-Pages. As a Job Template attribute, it affects each Sheet produced by the Job. As a Document-Overrides attributes, it affects only the specified Sheets. The Printer MAY support this attribute. A client OPTIONALLY supplies it.
See section 5.1.10.1 for additional information. The section describes the common behavior of all Sheet attributes.
5.1.12	Handling of Error conditions
If a client omits a required member attribute or includes two member attributes that should never both be present (e.g. “input-document” and “output-document”), a Printer MUST reject all attributes in the ‘collection’ value and treat the ‘collection’ values, but not other sibling ‘collection’ values, as unsupported.
If a client puts a member attribute in some position other than its required position (e.g. “input-documents” MUST be first),  a Printer MUST either:
a)	use the specified value of  the member attribute and ignore its wrong position or
b)	reject all attributes in the ‘collection’ value and treat the ‘collection’ values, but not other sibling ‘collection’ values, as unsupported.
5.1.13	Why not “document-overrides-default”
There is no “document-overrides-default” attribute because it adds complicated rules for a Printer to implement.  The problems are best illustrated with examples.
If there were a “document-overrides-default” and it contained a “sides” and “media” override for the first Output-Page, and if a client submitted a Job with no “sides” attribute and with “media” as a Job attribute with no overrides, a possible meaning is that the Printer uses the client’s requested media for the entire Job and the sides specified by the “sides-default” and the “sides” value in “document-overrides-default”. So in this example, the Printer ignores the “document-overrides-default” attribute for “media”, but uses it for “sides” because the Printer uses it for an attribute “xxx” only when it uses “xxx-default”. 
5.1.14	document-overrides-supported (1setOf  type2 keyword)
This attribute specifies the supported values of the “document-overrides” attribute. A client can use this attribute to determine what Document-Overrides attributes the Printer supports. 
This attribute contains the name of each attribute that the Printer supports in a ‘collection’ value of the “document-overrides” attribute.  This attribute MUST contain the keywords “input-documents” and “output-documents” because a Printer MUST support these attributes. This attribute MUST also contain the name of each attribute that can be a document-override. For example, this attribute contains the keyword “sides” if and only if  the Printer supports “sides” in a ‘collection’ value of the “document-overrides” attribute.
There are no corresponding “input-documents-supported”, “output-documents-supported” and “document-copies-supported” Printer attributes.  However, the supported values for all of the other member attributes are indicated by the corresponding “xxx-supported” Printer attributes which are the same values as for the corresponding “xxx” operation or Job Template attribute.  For example, if “document-format” and “sides” are supported as member attributes of the “document-exceptions” collection, then the “document-format-supported” and the “sides-supported” Printer attribute indicates the values that are supported at the job level and as a Document Exception.
Standard keyword values are:

-	'none':  no attributes are supported in the “document-overrides” attribute
-	'input-documents': the “input-document” member attribute is supported
-	'output-documents': the “output-document” member attribute is supported
-	'document-copies': the “document-copies” member attribute is supported
-	'document-format':  The "document-format" member attribute is supported
-	'document-name':  The "document-name" member attribute is supported
-	'compression':  The "compression" member attribute is supported
-	'document-natural-language':  The "document-natural-language" member attribute is supported 
-	'page-ranges':  The "page-ranges" member attribute is supported
-	'finishings':  The "finishing" member attribute is supported 
-	'sides':  The "sides" member attribute is supported
-	'media':  The "media" member attribute is supported 
5.2	page-overrides (1setOf  collection) 
This OPTIONAL Job Template attribute contains attributes that are associated with Input-Pages and Output-Pages and that are treated as page overrides. Such attributes are called “Page-Overrides” attributes. The remainder of this section describes features that an implementation MUST support or MAY support if an implementation supports this attribute

If this attribute is not present in a Job, there are no Page-Overrides attributes within the Job. If it is present, the value consists of one or more ‘collection’ values, where each ‘collection’ value identifies one or more Input-Pages or Output-Pages and contains one or more Job Template attributes which act as overrides to the corresponding Job Template attributes for the specified Input-Pages or Output-Pages.

The first attribute of each ‘collection’ value MUST be either “input-documents” or “output-documents”. 

The second attribute MAY be “document-copies”. If present, this attributes identifies the copies of the Output-Document. If this attribute is not present in a ‘collection’ value, then the ‘collection’ value applies to all Output-Document-Copies.

If “document-copies” is present, the “pages” attribute MUST be the third attribute; otherwise, it MUST be the second attribute. The “pages” attribute identifies either
 
-	the Input-Pages relative to the Input-Document specified by “input-documents” or 
-	the Output-Pages relative to the Output-Document specified by “output-documents”. 
The Page-Overrides attributes applies to the identified Input-Pages or Output-Pages, which need not be contiguous.

The remaining attributes in the ‘collection’ value are the Job Template attributes that are overrides for the specified Input-Pages or Output-Pages. 
There may be more than one way for a client to arrange Page-Override attributes in ‘collection’ values. For example, if an Output-Document contains 10 Output-Pages to be printed 1-sided on white letter paper and Output-Page 1 is to be two sided  with blue letter paper and Document 2 is to be two sided with white letter paper, there are two possible ways to group the overrides.  The client could specify the two overrides for Output-Page 1 in one ‘collection’ value and the single override for Output-Page 2 in second ‘collection’ values, or it could specify “two-sided” for Output-Pages 1 and 2 in one ‘collection’ value and “blue letter paper” for Output-Document 1 in another ‘collection’ value. 
If the “pages”, “document-copies” and the “input-documents” or “output-documents” identify Input-Pages, Output-Pages that either don’t exist or are within nonexistent Output-Document-Copies, Input-Documents or Output-Documents, the Printer silently ignores them and associates the Page-Overrides with those Input-Pages or Output-Pages that do exist. A client MUST not allow two ‘collection’s values to be associated with the same Input-Page or Output-Page and to contain the same Page-Override attribute with different values. If there is such a conflict, the Printer can use either value, and it MUST issue a warning. It does so by adding ‘job-warnings-detected’ to the “job-state-reasons” and by increasing the value of  the “job-warnings-count” Job Description attribute by 1.  If the Printer detects this conflict while it is processing a Job-Submission operation, it MUST return the ignored value in the Unsupported attributes. 
When a Client receives this attribute in a Get-Jobs or Get-Job-Attributes, the value MUST contain the same ‘collection’ values received in Job-Submission operations, except for those ‘collection’ values the Printer returned in the Unsupported Attributes. 
Each ‘collection’ value of this attribute has either of the two forms as defined below. The ‘collection’ values NEED NOT all be of the same form. 
For the first form, the client MUST supply “input-documents” as the first attribute. If the client supplies the “document-copies” attribute, it MUST be the second attribute. The “pages” attribute MUST be the next attribute. The client OPTIONALLY supplies the remaining attributes in any order.
Attribute name	syntax	In request	Printer Support	
input-documents	1setOf rangeOfInteger(MAX)	MUST	MUST	
document-copies	1setOf rangeOfInteger(MAX)	MAY	MAY	
pages	1setOf rangeOfInteger(MAX)	MUST	MUST	
sides	type2 keyword	MAY	MAY	
media	type3 keyword | name(MAX	MAY	MAY	
For the second form, the client MUST supply “output-documents” as the first attribute. If the client supplies the “document-copies” attribute, it MUST be the second attribute. Then the “pages” attribute MUST be the next attribute. The client OPTIONALLY supplies the remaining attributes in any order.
Attribute name	syntax	In request	Printer Support	
output-documents	1setOf rangeOfInteger(MAX)	MUST	MUST	
document-copies	1setOf rangeOfInteger(MAX)	MAY	MAY	
pages	1setOf rangeOfInteger(MAX)	MUST	MUST	
sides	type2 keyword	MAY	MAY	
media	type3 keyword | name(MAX)	MAY	MAY	
The following sections describe each member attribute in the above table.
5.2.1	input-documents (1setOf rangeOfInteger (1:MAX))
See section 5.1.1 for details of this attribute.
5.2.2	output-documents (1setOf rangeOfInteger (1:MAX))
See section 5.1.2 for details of this attribute.
5.2.3	document-copies (1setOf rangeOfInteger (1:MAX))
This attribute identifies one or more Output-Document-Copies by specifying a range of numbers. The Page-Overrides apply to the Output-Pages within the identified Output-Documents-Copies within Output-Documents specified either directly by “output-documents” or indirectly by “input-documents” (see section 17 for further details).
A Printer MAY support this attribute. A client MAY supply this attribute in each ‘collection’ value. It MUST be the second attribute of each ‘collection’ value if the client supplies it. If this attribute is present, then the client MUST also supply the “input-documents” or “output-documents” attribute. 
Note: because the Printer silently ignores values that reference non-existent copies, a value of ‘MAX’ is equivalent to the number of copies.
There is no “document-copies-supported” attribute, since the full range MUST be supported, if the “document-copies” member attribute is supported.
5.2.4	pages (1setOf rangeOfInteger(1:MAX)) 
This attribute identifies one or more Input-Pages or Output-Pages by specifying one or more ranges of numbers (see section 4.1 for the rules on associating a number with each Input-Page or Output-Page). The “1setOf” allows noncontiguous Input-Page or Output-Pages. The Page-Overrides apply to the identified Input-Pages or Output-Pages within the Output-Documents specified directly by “output-documents” or indirectly by “input-documents”.  The “document-copies” specifies particular copies of Output-Documents.
If the “page-ranges” attribute (see section 5.1.8) is associated with an Input-Document, the Input-Pages identified by this attribute are the same as when “page-ranges” is not present. However, this attribute may identify pages that are deselected for printing by the “page-ranges” attribute. For example, if the value of “page-ranges” is “5:10” and this attribute identifies Input-Pages “3:6”, this attribute identifies two Input-Pages (3 and 4) that are not printed and two that are (5 and 6)
If a Printer support the “page-overrides” attribute, it MUST support this attribute. A client MUST supply this attribute in each ‘collection’ value of the “page-overrides” attribute and it MUST be the second attribute of each ‘collection’ value. 

When a client supplies this attribute in a Send-Document or Send-URI request, this attribute MUST NOT identify Output-Pages sent in an earlier operation. If a Printer receives such a  value in a ‘collection’ value, it MUST treat all such values, but not other sibling ‘collection’ values, as unsupported values.

Note: because the Printer silently ignores values that reference non-existent pages, a value of ‘MAX’ is equivalent to the number of pages in each specified Input-Document or Output-Document.

There is no “pages-supported” attribute, since the member attribute MUST be supported and for the full range.

See section 5 for details of usage of this attribute.
5.2.5	sides (type2 keyword) 
This attribute has the same meaning as in IPP/1.1.  It indicates the sides for one or more specified Output-Pages. As a Job Template attribute, it affects each Sheet produced by the Job. As a Page-Overrides attributes, it affects only the specified Sheets. The Printer MAY support this attribute. A client OPTIONALLY supplies it.
See section 5.1.10.1 for additional information. The section describes the common behavior of all Sheet attributes.
5.2.6	media (type3 keyword | name(MAX)) 
This attribute has the same meaning as in IPP/1.1.  It indicates the media for one or more specified Output-Pages. As a Job Template attribute, it affects each Sheet produced by the Job. As a Page-Overrides attributes, it affects only the specified Sheets. The Printer MAY support this attribute. A client OPTIONALLY supplies it.
See section 5.1.10.1 for additional information. The section describes the common behavior of all Sheet attributes.
5.2.7	Handling of Error conditions
See section 5.1.12.
5.2.8	Why not “page-overrides-default” 
There is no “page-overrides-default”. See section 5.1.12 for the reasons. 
5.2.9	page-overrides-supported (1setOf  type2 keyword)
This attribute specifies the supported values of the “page-overrides” attribute. A client can use this attribute to determine what override attributes the Printer supports. 
This attribute contains the name of each attribute that the Printer supports in a ‘collection’ value of the “page-overrides” attribute.  This attribute MUST contain the keywords “input-documents”, “output-documents” and “pages” because a Printer MUST support these attributes. This attribute MUST also contain the name of each attribute that can be a page-override. For example, this attribute contains the keyword “sides” if and only if  the Printer supports “sides” in a ‘collection’ value of the “page-overrides” attribute.
There are no corresponding “input-documents-supported”, “output-documents-supported”, “document-copies-supported”, and “pages-supported” Printer attributes.  However, the supported values for all of the other member attributes are indicated by the corresponding “xxx-supported” Printer attributes which are the same values as for the corresponding “xxx” operation or Job Template attribute.  For example, if “sides” is supported as a member attribute of the “page-exceptions” collection, then the “sides-supported” Printer attribute indicates the values that are supported at the job level and as a Page Exception.

Standard keyword values are:

-	'none':  no attributes are supported in the “page-overrides” attribute
-	'input-documents': the “input-document” member attribute is supported
-	'output-documents': the “output-document” member attribute is supported
-	'document-copies': the “document-copies” member attribute is supported
-	'pages':  The "pages " member attribute is supported
-	'sides':  The "sides" member attribute is supported
-	'media':  The "media" member attribute is supported 
5.3	pages-per-subset (1setOf integer) 
A client OPTIONALLY supplies this attribute, and a Printer OPTIONALLY supports this attribute. If a Printer supports the Page-Subset Document Case, it MUST support this attribute.

When this attribute is present, it  effectively partitions one or more Input-Documents into contiguous subsets of Input-Pages. Each subset is defined to be an Output-Document

The value of the attribute is a set of one or more integers, where each integer specifies the number of Input-Pages in a subset, and the set is treated as a repeating sequence of integers. Thus, when the attribute contains a single integer, the integer specifies the number of Input-Pages in each subset, as a repeating sequence of the single integer. When the number of integers in this attribute exceeds 1, the first integer specifies the number of Input-Pages in the first subset, the second integer specifies the number of Input-Pages in the second subset and so on. If numbers in this attribute are exhausted before partitioning all of the Input-Pages, the Printer starts at the beginning of the sequence again and continues until all Input-Pages are partitioned.

If the job contains more than one Input-Document, the Input-Pages are treated as a single stream of Input-Pages which are partitioned into contiguous subsets with some subsets possibly belonging to more than one Input-Document.

If the number of Input-Pages available for the last subset is less than the number specified by this attribute, the Printer MUST treat the last subset as an Output-Document and MUST issue a warning by adding ‘job-warnings-detected’ to the “job-state-reasons” and by increasing the value of  the “job-warnings-count” Job Description attribute by 1.

If the “multiple-document-handling” attribute is present and has the value 'separate-documents-collated-copies' or 'separate-documents-uncollated-copies', the Printer MUST uses this attribute; otherwise (i.e., the value of the “multiple-document-handling” attribute has the value 'single-document' or 'single-document-new-sheet'), the Printer ignores this attribute.
5.3.1	Why not “pages-per-subset-default” 
There is no “pages-per-subset-default” because there is no mechanism for a client to specify that there are no Input-Page subsets except to omit this attribute, which would cause the Printer to use the “pages-per-subset-default” attribute and create the default subsets.  Without this attribute, a client can achieve subsets only by including the “pages-per-subset” attribute in the Job and the default is no subsetting. Also, if there were a defaulting mechanism, it isn’t clear that customers would use the same partitioning over and over.
5.3.2	pages-per-subset-supported (boolean)
This attribute specifies whether the Printer supports the Page-Subset Document Case.  If the attribute is present and has a value of “true”, the Printer supports the Page-Subset Document Case. Otherwise, the Printer doesn’t support the Page-Subset Document Case.
Note: if the value of this attribute is ‘true’, then the rules described elsewhere in this document imply that: 
a)	Any attribute that affects an Output-Document affects an Output Document created with the “pages-per-subset” attribute. 
b)	Any attribute that affects an Output-Page affects the Output-Page of an Output-Document created with the “pages-per-subset” attribute.
6	New Job Description attributes
6.1	job-warnings-count (integer)
This OPTIONAL attribute specifies the total number of warnings that a Printer has generated while processing and printing the Job.  At the beginning of a Job, the value MUST be 0. It MUST increase by 1, each time the Printer generates a warning.
7	New Job Description Values
7.1	job-warnings-detected value for job-state-reasons (1setOf  type2 keyword)
If the Printer supports the value ‘job-warnings-detected’, the Printer MUST add it to “job-state-reasons” when it generates the first warning message. That is, a single occurrence of this value is present in the “job-state-reasons” if the Printer has generated one or more warnings. 
8	Extended Role of Some Operation Attributes 
In IPP/1.1, the following attributes are operation attributes in all Job-Submission operations except Create-Job, but the Printer doesn’t put their values into the Job object. 

-	document-format
-	document-name
-	compression
-	document-natural-language

With the Override Extension, these attributes also become:

-	Operation attributes in the Create-Job and Validate-Job operation when all or most Input-Documents have the same attribute value.
-	Job Template attributes, so their values are accessible to a client via the Get-Job-Attributes and Get-Jobs operation.
-	Job Description attributes, for legacy reasons so their values are accessible to a client via the Get-Job-Attributes and Get-Jobs operation via the Job Description group name.
-	Document-Overrides attributes, so the values are associated with one Input-Document (possible in IPP/1.1) and a client can query the attributes via Get-Job-Attributes and Get-Jobs operation (not possible in IPP/1.1).
If a Printer supports the Override Extension and if it supports an attribute in this section, it MUST support the attribute in the three contexts above. In IPP/1.1, a Printer MUST support all attributes in this section except the “document-natural-language” attribute. This effectively means that if a Printer supports this extension, it MUST support all of the attributes in this section except “document-natural-language” in the three contexts described above.

When one of the attributes in this section is an operation attribute in Print-Job, Print-URI or Create-Job, it becomes a Job Template attribute in the newly created Job object. If one of these attributes is a Document-Overrides attribute, that attribute overrides the Job level attribute for the specified Input-Document. 

When one of the attributes in this section is an operation attribute in Validate-Job, it is validated as if it were an operation attribute of Create-Job.

When one or more of the attributes in this section is an operation attribute in Send-Document or Send-URI request, they are put into a ‘collection’ value that is added to the “document-overrides” attribute. See section 5.1 for a discussion of possible conflicts.
9	Extensions to Printer Operations
The sections below specify the extensions to the groups within IPP 1.1 operations. If an operation or a group within an operation is not mentioned, this extension does not change that operation or group, respectively.

9.1	Create-Job and Validate-Job Operation Requests
Attributes are added to the operation attributes group.

Group 1: Operation Attributes
 
Add the attributes specified in section 6: “document-format”, “document-name”, “compression” and “document-natural-language”, so that a client can specify these attributes, at the job level.
9.2	Send-Document and Send-URI Operation Requests 
Attributes are added to the Operation Attributes group.

Group 1: Operation Attributes
 
"input-document-number" (integer):

The client OPTIONALLY supplies this attribute in order to inform the printer about the order of documents when the printer is sending the Input-Documents asynchronously. The first Input-Document is 1, and subsequent Input-Documents are numbered sequentially. If the value of  “last-document” is ‘true’, then the value of this attribute is also the total number of Input-Documents in the Job.  If a client supplies this attribute in one Send-Document or Send-URI operation in a Job, it MUST send it in all such operations. A Printer deals with missing Input-Documents in the same way as without this attribute except that a time-out can occur with Input-Documents anywhere in the Job. For example, a Printer could receive Input-Documents 1 and 3 and not 2.  

"document-overrides" (1setOf collection):

The client OPTIONALLY supplies this attribute. See section 5.1 for details. The Printer MUST support this attribute if it supports the “document-overrides” Job Template attribute.  If the job doesn’t contain a “document-overrides” attribute, this attribute is added to the Job. Otherwise, the ‘collection’ values from this attribute are appended to the existing “document-overrides” attribute. See section 5.1 for rules of resolving conflicts. Also the “input-documents” attribute is added to any ‘collection’ value that contains neither an “input-documents” nor “output-documents” attribute. 

"page-overrides" (1setOf collection):

The client OPTIONALLY supplies this attribute. See section 5.2 for details. The Printer MUST support this attribute if it supports the “page-overrides” Job Template attribute.  If the job doesn’t contain a “page-overrides” attribute, this attribute is added to the Job. Otherwise, the ‘collection’ values from this attribute are appended to the existing “page-overrides” attribute. See section 5.2 for rules of resolving conflicts. Also the “input-documents” attribute is added to any ‘collection’ value that contains neither an “input-documents” nor “output-documents” attribute. 
10	Examples
This section currently contains 3 examples for various relationships of Input-Documents and Output-Documents. The first example is for the Degenerate Case only. The second and third cases are for the Separate-Document Case, the Single-Documents Case and the Page-Subset Documents Case.

Brackets are used to delimit the beginning and end of each Collection value.
10.1	First Page of Single Document is Letterhead
In the first example, the Printer produces 1 copy of a single Output-Document. It is printed on letter-paper using Print-Job. The first Output-Page of the Output-Document is letterhead paper.

10.1.1	Degenerate Case.
There is one Input-Document A which produces one Output-Document.

Print-Job
job attributes group
media: letter
page-overrides: {
output-documents: 1:1                  (I could have used input-documents: 1:1 as well)
pages: 1:1
media: letterhead }
end-of-attributes
Input-Document A 

10.2	First Page of Several Documents is Blue
In the second example, the Printer produces 3 copies of each Output-Document. Each is stapled and printed on letter-paper, two-sided using Create-Job. The first Output-Page of each Output-Document is blue-letter paper and one-sided. All Input-Documents are PostScript.

Attributes that differ between cases are in bold. The values for the attribute “input-documents” changes with each example, but could be “1:100” for all.
10.2.1	Separate-Documents Case.
There are two Input-Documents A and B which produce two Output-Documents.

Create-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
*	       multiple-document-handling: separate-documents-collated-copies	
sides: two-sided-long-edge
media: letter
copies: 3						
finishings: stapling					
page-overrides: {
output-documents: 1:2                  (I could have used input-documents: 1:2 as well)
pages: 1:1
sides: one-sided
media: blue-letter }
end-of-attributes
Send-Document
end-of-attributes
Input-Document A 
Send-Document
end-of-attributes
Input-Document B 

10.2.2	Single-Documents Case
There are two Input-Documents A and B and only one Output-Document.

Create-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
multiple-document-handling: single-document	
sides: two-sided-long-edge
media: letter
copies: 3						
finishings: stapling					
page-overrides: {
output-documents: 1:1                  (I could have used input-documents: 1:2)
pages: 1:1
sides: one-sided
media: blue-letter }
end-of-attributes
Send-Document
end-of-attributes
Input-Document A 
Send-Document
end-of-attributes
Input-Document B 

10.2.3	Page-Subset Documents Case
There are two Input-Documents A and B. . The first Input-Document contains 10 Pages and the second one 15 pages.  There are 7 Output-Documents with 3 pages, 5 pages, 4 pages,  2 pages, 3 pages, 5 pages and 3 pages. The “ pages-per-subset” attributes wraps after the first four Output-Documents and starts with “3” again.  After consuming 22 Input-Pages, the next number is “4”, but only 3 pages remain. So the last Output-Document is short. These value show two boundary cases.

Create-Job
 	operations attributes group
document-format: application/PostScript					
job attributes group
multiple-document-handling: separate-documents-collated-copies
pages-per-subset: 3, 5, 4, 2
sides: two-sided-long-edge
media: letter
copies: 3						
finishings: stapling					
page-overrides: {
output-documents: 1:7                    (I could have used output-documents: 1:100 to be safe)
pages: 1:1		  	 
sides: one-sided		
media: blue-letter }
end-of-attributes
Send-Document
end-of-attributes
Input-Document A 
Send-Document
end-of-attributes
Input-Document B 
10.3	First Page is Blue and First Document is not stapled
In the third example, the Printer produces 3 copies of each Output-Document. Each is stapled and printed on letter-paper, two-sided using Create-Job. The third and fourth Output-Pages of each Output-Document is blue-letter paper and one-sided. The second Output-Document is not stapled. All files are PostScript except the second which is html.

Attributes that differ between cases are in bold. The values for the attribute “input-documents” changes with each example, but could be “1:100” for all.
10.3.1	Separate-Documents Case
There are two Input-Documents A and B which produce two Output-Documents. 

Here are three solutions presented here in order to show three different places to put the attributes associated with an Input-Document. The differences are in bold-italic.
10.3.1.1	First solution:
Create-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
multiple-document-handling: separate-documents-collated-copies	
sides: two-sided-long-edge
media: letter
copies: 3						
finishings: stapling
document-format: application/PostScript					
document-overrides: {
output-documents: 2:2                 	 (I could have used input-documents: 2:2 & merged with next)
finishings: none }
			{		
input-documents: 2:2                 	 next value of multi-value
document-format:  text/html}	
page-overrides: {
output-documents: 1:2                 	 (I could have used  input-documents: 1:2 as well)
pages: 3:4
sides: one-sided
media: blue-letter }
end-of-attributes
Send-Document
	end-of-attributes
Input-Document A 
Send-Document
end-of-attributes
Input-Document B 
10.3.1.2	Second solution:
Create-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
multiple-document-handling: separate-documents-collated-copies	
sides: two-sided-long-edge
media: letter
copies: 3						
finishings: stapling
document-format: application/PostScript					
document-overrides: {
output-documents: 2:2                 	 
finishings: none }
page-overrides: {
output-documents: 1:2                 	 (I could have used  input-documents: 1:2 as well)
pages: 3:4
sides: one-sided
media: blue-letter }
end-of-attributes
Send-Document
	end-of-attributes
Input-Document A 
Send-Document
	Operation attributes group
document-format:  text/html		
end-of-attributes
Input-Document B 
10.3.1.3	Third solution:
Create-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
multiple-document-handling: separate-documents-collated-copies	
sides: two-sided-long-edge
media: letter
copies: 3						
finishings: stapling
document-format: application/PostScript					
page-overrides: {
output-documents: 1:2                 	 (I could have used  input-documents: 1:2 as well)
pages: 3:4
sides: one-sided
media: blue-letter } 
end-of-attributes
Send-Document
	end-of-attributes
Input-Document A 
Send-Document
	Operation attributes group
document-overrides: {			
input-documents: 2:2                 	 
document-format:  text/html	
finishings: none }
end-of-attributes
Input-Document B 
10.3.2	Single-Documents Case
There are two Input-Documents A and B and only one Output-Document.

Here are three solutions. The Page-Override attributes are in Create-Job in the first solution and in Send-Document in the last two solutions. The Document-Override attribute is directly in the operation attributes of Send-Document in the first two solutions and in the document-overrides attributes of Send-Document in the third solution. The differences are in bold-italic.
10.3.2.1	First solution:
Create-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
multiple-document-handling: single-document	
sides: two-sided-long-edge
media: letter
copies: 3						
finishings: stapling					
document-overrides: {
output-documents: 2:2                 	 (This is ignored because there is no 2nd document)
finishings: none }
page-overrides: {
input-documents: 1:1                  	(I could have used output-documents: 1:1)
pages: 3:4
sides: one-sided
media: blue-letter }
end-of-attributes
Send-Document
end-of-attributes
Input-Document A 
Send-Document
	Operation attributes group
document-format:  text/html		
end-of-attributes
Input-Document B 
10.3.2.2	Second solution:
Create-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
multiple-document-handling: single-document	
sides: two-sided-long-edge
media: letter
copies: 3						
finishings: stapling					
document-overrides: {
output-documents: 2:2                 	 (This is ignored because there is no 2nd document)
finishings: none }
end-of-attributes
Send-Document
	Operation attributes group
page-overrides: {
input-documents: 1:1                  	(I could have used output-documents: 1:1)
pages: 3:4
sides: one-sided
media: blue-letter }
end-of-attributes
Input-Document A 
Send-Document
	Operation attributes group
document-format:  text/html		(this can be here or in the document-overrides)
end-of-attributes
Input-Document B 
10.3.2.3	Third solution:
Create-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
multiple-document-handling: single-document	
sides: two-sided-long-edge
media: letter
copies: 3						
finishings: stapling					
document-overrides: {
output-documents: 2:2                 	 (This is ignored because there is no 2nd document)
finishings: none }
end-of-attributes
Send-Document
	Operation attributes group
page-overrides: {
input-documents: 1:1                  	(I could have used output-documents: 1:1)
pages: 3:4
sides: one-sided
media: blue-letter }
end-of-attributes
Input-Document A 
Send-Document
	Operation attributes group
document-overrides: {
input-documents: 2:2                  
document-format:  text/html }		
end-of-attributes
Input-Document B 
10.3.3	Page-Subset Documents Case
There are two Input-Documents A and B. . The first Input-Document contains 10 Pages and the second one 15 pages.  There are 7 Output-Documents with 3 pages, 5 pages, 4 pages,  2 pages, 3 pages, 5 pages and 3 pages. The “pages-per-subset” attributes wraps after the first four Output-Documents and starts with “3” again.  After consuming 22 Input-Pages, the next number is “4”, but only 3 pages remain. So the last Output-Document is short.

Create-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
multiple-document-handling: separate-documents-collated-copies
pages-per-subset: 3, 5, 4, 2
sides: two-sided-long-edge
media: letter
copies: 3						
finishings: stapling					
document-overrides: {
output-documents: 2:2                 	 
finishings: none }
page-overrides: {
output-documents: 1:7                  (I could have used input-documents: 1:100 to be safe)
pages: 3:4
sides: one-sided
media: blue-letter }
end-of-attributes
Send-Document
end-of-attributes
Input-Document A 
Send-Document
	Operation attributes group
document-format:  text/html		(this can be here or in the document-overrides)
end-of-attributes
Input-Document B 
10.4	One document with 100 copies for distribution and one on transparencies.
In the fourth example, the Printer produces 101 copies of the single Output-Document using Print-Job. The first 100 are stapled and printed on letter-paper, two-sided, except the first page is on blue paper, one-sided. The last copy (number 101) is printed on transparencies, one-sided and not stapled. The file is PostScript. 

Here are three possible solutions. The first assumes that the job requests 101 letter-paper documents and that the single transparency copy is the override. The second assumes that the job requests 101 transparency documents and that the 100 letter-paper copies are the override. The third assumes that the job requests 101 documents with default characteristics and that both single transparency copy and the 100 letter-paper copies are overrides. The differences are in bold-italic.
10.4.1	First solution.
Print-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
sides: two-sided-long-edge
media: letter
copies: 101						
finishings: stapling
document-format: application/PostScript					
document-overrides: {
output-documents: 1:1  		 (I could have used  input-documents: 1:1 as well)     
document-copies: 101:101       
sides: one-sided
media: transparency 
finishings: none }	
page-overrides: {
output-documents: 1:1                 	 (I could have used  input-documents: 1:1 as well)
document-copies: 1:100       
pages: 1:1
sides: one-sided
media: blue-letter }
end-of-attributes
Input-Document A
10.4.2	Second solution.
Print-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
sides: one-sided
media: transparency 
copies: 101						
finishings: none 
document-format: application/PostScript					
document-overrides: {
output-documents: 1:1  		 (I could have used  input-documents: 1:1 as well)     
document-copies: 1:100       
sides: two-sided-long-edge
media: letter 
finishings: stapling }	
page-overrides: {
output-documents: 1:1                 	 (I could have used  input-documents: 1:1 as well)
document-copies: 1:100       
pages: 1:1
sides: one-sided
media: blue-letter }
end-of-attributes
Input-Document A 
10.4.3	Third solution.
Print-Job
	operations attributes group
document-format: application/PostScript					
job attributes group
copies: 101						
document-format: application/PostScript					
document-overrides: {
output-documents: 1:1  		 (I could have used  input-documents: 1:1 as well)     
document-copies: 101:101       
sides: one-sided
media: transparency 
finishings: none }	
{
output-documents: 1:1  		 (I could have used  input-documents: 1:1 as well)     
document-copies: 1:100       
sides: two-sided-long-edge
media: letter 
finishings: stapling }	
page-overrides: {
output-documents: 1:1                 	 (I could have used  input-documents: 1:1 as well)
document-copies: 1:100       
pages: 1:1
sides: one-sided
media: blue-letter }
end-of-attributes
Input-Document A
11	Conformance Requirements
This section specifies the Conformance Requirements.

This specification describes two independent override mechanisms. One is for overriding attributes in a particular document (Document Overrides) and the other is for overriding attributes on a particular page (Page Overrides). If a Client or Printer supports this specification, it MUST support at least one of these two mechanisms; it MAY support both.  If these two override capabilities are viewed as entirely independent mechanisms, there are no interoperability issues. If a Client and Printer both support Document Overrides, there is interoperability for Document Overrides. Likewise, if a Client and Printer both support Page Overrides, there is interoperability for Page Overrides.   

The following are the conformance rules for Document Overrides and Page Overrides. See section 5.1 for further details on Document Overrides and section 5.2 for further details on Page Overrides

1.	If a Printer or Client supports Document Overrides, it MUST support
1.1.	the “document-overrides” attribute, and 
1.2.	the Create-Job operation (there is no need to override Jobs with single documents)
1.3.	the “document-overrides-supported” attribute, and
1.4.	the following member attributes of “document-overrides”:
1.4.1.	“input-documents” 
1.4.2.	“output-documents” if any Job Template attribute supported as a member attribute affects Output-Documents. (see Note for “output-documents”),
1.4.3.	“document-format”, “document-name” and “compression”.   
1.4.4.	at least one Job Template attribute that can be overridden, that is, the attributes  “page-ranges”, “finishings”, “sides” or “media” or some other suitable attribute defined in another specification.

2.	If a Printer or Client supports Page Overrides, it MUST support 
2.1.	the “page-overrides” attribute, and
2.2.	the “page-overrides-supported” attribute, and
2.3.	the following member attributes of “page-overrides”:
2.3.1.	“input-documents”, 
2.3.2.	“output-documents” (see Note for “output-documents”),
2.3.3.	“pages”, and
2.3.4.	at least one Job Template attribute that can be overridden, that is the attribute  “sides” or “media” (described in this document) or some other suitable Job Template attribute defined in another specification.

Note for “output-documents”: if the “pages-per-subset” attribute is not supported, the "output-documents" attribute (depending on the value of the “multiple-document-handling” attribute) is identical to using “input-documents” with a value that is either the same or is in the range of 1 to the number of input-documents. 

For example, if the “multiple-document-handling” is  'separate-documents-collated-copies' or 'separate-documents-uncollated-copies' and if “output-documents” has the value of 4, this case is equivalent to having “input-documents” with a value of 4. 

If “multiple-document-handling” is 'single-document' or 'single-document-new-sheet', if there are 20 input-documents, and if “output-documents” has the value of 1 (the only possible value for these values of “multiple-document-handling”), this is equivalent to having “input-documents” with a value of “1:20”.

A conforming Printer MUST handle unsupported attributes correctly. If a Printer receives a “document-overrides” or “page-overrides” attribute that contains one or more unsupported member, it MUST return in the Unsupported Attributes group of the response the “document-overrides” or “page-overrides” attribute with the unsupported members attributes. The “ipp-attribute-fidelity” determines whether the Printer 
a)	rejects the Job or 
b)	accepts the Job and ignores the unsupported member attributes.

A Client or a Printer OPTIONALLY supports the “document-copies” attribute as a member attribute of either “document-overrides” or “page-overrides”. If a Printer does not support the “document-copies” member attribute and receives it in a “document-overrides” or “page-overrides”, it treats the “document-copies” attributes as described in the previous paragraph. If the Printer accepts the Job, it behaves as if the overrides applied to all copies of the specified documents or pages, i.e. the way the Printer would behave if it supported “document-copies” and the client didn’t supply it.
12	IANA Considerations
This section contains the exact information for IANA to add to the IPP Registries according to the procedures defined in RFC 2911 [RFC2911] section 6.
12.1	Attribute Registration
The attributes defined in this document will be published by IANA according to the procedures in RFC 2911 [RFC2911] section 6.2 with the following path:

ftp.isi.edu/iana/assignments/ipp/attributes/

The registry entry will contain the following information:

Reference IEEE-ISTO 5100.4:  
ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.4.pdf

Job Template attributes:                                      Section:
document-overrides (1setOf collection)                          5.1
page-overrides (1setOf  collection)                             5.2
pages-per-subset (1setOf integer)                               5.3

Job Description attributes:                                   Section:
job-warnings-count (integer)                                    6.1

Operation attributes:                                         Section:
input-document-number (integer)                                 9.2
document-overrides" (1setOf collection)                         9.2
page-overrides" (1setOf collection)                             9.2
12.2	Keyword Attribute Value Registrations
The keyword attribute values defined in this document will be published by IANA according to the procedures in RFC 2911 [RFC2911] section 6.1 with the following path:

ftp.isi.edu/iana/assignments/ipp/attribute-values/

The registry entry will contain the following information:

Reference IEEE-ISTO 5100.4:  
ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.4.pdf

Additional type2 keyword values for "job-state-reasons":     Section:
   job-warnings-detected                                       7.1
13	Internationalization Considerations
The IPP extensions defined in this document require the same internationalization considerations as any of the Job Template attributes defined in IPP/1.1 [RFC2911].
14	Security Considerations
The IPP extensions defined in this document require the same security considerations as any of the Job Template attributes defined in IPP/1.1 [RFC2911].
15	References
[RFC2026]  
	Bradner, S., “The Internet Standards Process -- Revision 3”, RFC 2026, October 1996.

[RFC2565]  
	Herriot, R., Butler, S., Moore, P. and R. Turner, “Internet Printing Protocol/1.0: Encoding and Transport”, RFC 2565, April 1999.
[RFC2566]  
	deBry, R., Hastings, T., Herriot, R., Isaacson, S. and P. Powell, “Internet Printing Protocol/1.0: Model and Semantics”, RFC 2566, April 1999.
 [RFC2910]
	Herriot, R., Butler, S., Moore, P., Turner, R. and J. Wenn, “Internet Printing Protocol/1.1: Encoding and Transport”, RFC 2910, September 2000.
[RFC2911]
	Hastings, T., Herriot, R., deBry, R., Isaacson, S. and P. Powell, “Internet Printing Protocol/1.1: Model and Semantics”, RFC 2911, September 2000.
16	Author's Addresses
Robert Herriot
Xerox Corp.
3400 Hill View Ave, Building 1
Palo Alto, CA 94304

Phone: 650-813-7696
Fax:	 650-813-6860
e-mail: robert.herriot@pahv.xerox.com

Kirk Ocke
Xerox Corporation
800 Phillips Road
Webster, NY 14580

Phone: 716-422-4832
e-mail: Kirk.Ocke@usa.xerox.com

IPP Web Page:  http://www.pwg.org/ipp/
IPP Mailing List:  ipp@pwg.org

To subscribe to the ipp mailing list, send the following email:
1) send it to majordomo@pwg.org
2) leave the subject line blank
3) put the following two lines in the message body:
subscribe ipp
end

Implementers of this specification document are encouraged to join IPP Mailing List in order to participate in any discussions of clarification issues and review of registration proposals for additional attributes and values.

Other Participants:
Ron Bergman - Hitachi Koki Imaging Systems	Dan Calle - Digital Paper	
Weihai Chen - Microsoft	Lee Farrell - Canon Information Systems	
Satoshi Fujitani - Ricoh	Roelof Hamberg - Océ	
Tom Hastings - Xerox	Bob Herriot - Xerox	
David Kellerman - Northlake Software	Carl Kugler - IBM	
Harry Lewis - IBM	Carl-Uno Manros - Xerox	
Satoshi Matsushita - Brother	Ira McDonald - High North Inc.	
Paul Moore - Netreon	Hugo Parra, Novell	
Stuart Rowley - Kyocera	Gail Songer - Netreon	
Geoff Sorod - Software 2000	Jerry Thrasher - Lexmark	
Shinichi Tsuruyama - Epson	Atsushi Uchino - Epson	
Shigeru Ueda - Canon	William Wagner - NetSilicon/DPI	
Mark Vander Wiele - IBM	Don Wright - Lexmark	
Michael Wu - Heidelberg Digital	Peter Zehler - Xerox	

17	Appendix A: Rules for Attribute Association
For each category of attribute, there is a rule: 
1.	Input-Documents: such an attribute
a)	cannot be directly associated with Input-Pages, Output-Pages, Output-Documents
b)	can be directly associated with an Input-Document, and it affects the Input-Document it is associated with. 
c)	can be associated with a Job and it affects all Input-Documents that don’t have the attribute associated with it.
7.	Output-Documents: such an attribute
a)	can never be directly associated with an Input-Page or Output-Page. 
b)	can be directly associated with an Output-Document, and it affects the Output-Document it is associated with.
c)	can be directly associated with an Input-Document.  If that Input-Document produces a first Output-Page for one or more Output-Documents, the attribute is effectively associated with each such Output-Document that doesn’t have the attribute directly associated with it. Now use rule 7b). If that Input-Document doesn’t produce any first Output-Pages of an Output-Document, it is ignored and the Printer produces a warning message.
d)	can be associated with a Job and it affects all Output-Documents that don’t have the attribute associated with it.
8.	Sheets: such attributes
a)	can be directly associated with an Output-Page, and it affects the associated Output-Page . 
b)	can be directly associated with an Input-Page, and it is effectively associated with the Output-Page determined by the relationship described for the four cases in section 4.2 if that Output-Page doesn’t have the attribute directly associated with it. Now use rule 8a)
c)	can be directly associated with an Output-Document, and it affects all Output-Pages in the specified Output-Document that don’t have the attribute associated directly with it or the corresponding Input-Page.
d)	can be directly associated with an Input-Document, and it is effectively associated with all Input-Pages in the specified Input-Document that don’t have the attribute associated directly with it. By transitivity, the attribute is effectively associated with all corresponding Output-Pages (see section 4.2) that don’t have the attribute associated directly with the them or the containing Output-Document. Now use rule 8a)
e)	can be associated with a Job and it affects all Output-Pages that don’t have the attribute associated with it.

When an association includes the “document-copies” attribute, it modifies the meaning of the above rules slightly for each effective association. If the attribute effectively associates with:

-	Input-Documents, the Printer ignores the “document-copies” attribute.
-	Output-Documents, the attribute affects the specified copies of the Output-Documents (See Item 7b))
-	Sheets: the attribute affects the sheets of the specified copies of Output-Documents (See Items 8a) and 8c)).
18	Appendix B: Summary of other IPP documents

The full set of IPP documents includes:

1.	Design Goals for an Internet Printing Protocol [RFC2567]
2.	Rationale for the Structure and Model and Protocol for the Internet Printing Protocol [RFC2568]
3.	Internet Printing Protocol/1.1: Model and Semantics (this document)
4.	Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
5.	Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG]
6.	Mapping between LPD and IPP Protocols [RFC2569]

The "Design Goals for an Internet Printing Protocol" document takes a broad look at distributed printing functionality, and it enumerates real-life scenarios that help to clarify the features that need to be included in a printing protocol for the Internet.  It identifies requirements for three types of users: end users, operators, and administrators.  It calls out a subset of end user requirements that are satisfied in IPP/1.0.  A few OPTIONAL operator operations have been added to IPP/1.1.
The "Rationale for the Structure and Model and Protocol for the Internet Printing Protocol" document describes IPP from a high level view, defines a roadmap for the various documents that form the suite of IPP specification documents, and gives background and rationale for the IETF working group's major decisions.  
The "Internet Printing Protocol/1.1: Encoding and Transport" document is a formal mapping of the abstract operations and attributes defined in the model document onto HTTP/1.1 [RFC2616].  It defines the encoding rules for a new Internet MIME media type called "application/ipp".  This document also defines the rules for transporting over HTTP a message body whose Content-Type is "application/ipp".  This document defines a new scheme named 'ipp' for identifying IPP printers and jobs.  
The "Internet Printing Protocol/1.1: Implementer's Guide" document gives insight and advice to implementers of IPP clients and IPP objects.  It is intended to help them understand IPP/1.1 and some of the considerations that may assist them in the design of their client and/or IPP object implementations.  For example, a typical order of processing requests is given, including error checking.  Motivation for some of the specification decisions is also included.
The "Mapping between LPD and IPP Protocols" document gives some advice to implementers of gateways between IPP and LPD (Line Printer Daemon) implementations.
19	Appendix C: Description of the IEEE Industry Standards and Technology (ISTO)
The IEEE-ISTO is a not-for-profit corporation offering industry groups an innovative and flexible operational forum and support services.  The IEEE-ISTO provides a forum not only to develop standards, but also to facilitate activities that support the implementation and acceptance of standards in the marketplace.  The organization is affiliated with the IEEE (http://www.ieee.org/) and the IEEE Standards Association (http://standards.ieee.org/). 

For additional information regarding the IEEE-ISTO and its industry programs visit:

http://www.ieee-isto.org.
20	Appendix D: Description of the IEEE-ISTO PWG
The Printer Working Group (or PWG) is a Program of the IEEE Industry Standards and Technology Organization (ISTO) and is an alliance among printer manufacturers, print server developers, operating system providers, network operating systems providers, network connectivity vendors, and print management application developers chartered to make printers and the applications and operating systems supporting them work together better.  All references to the PWG in this document implicitly mean “The Printer Working Group, a Program of the IEEE ISTO.” In order to meet this objective, the PWG will document the results of their work as open standards that define print related protocols, interfaces, procedures and conventions. Printer manufacturers and vendors of printer related software will benefit from the interoperability provided by voluntary conformance to these standards. 

In general, a PWG standard is a specification that is stable, well understood and is technically competent, has multiple, independent and interoperable implementations with substantial operational experience, and enjoys significant public support. 

For additional information regarding the Printer Working Group visit:  

http://www.pwg.org