Printer Working Group Micro Job Ticket (draft) Version 1.0 Technical Brief Status: Initial 24 August 2004
Abstract: This document defines the semantics and encoding for the PWG Micro Job Ticket v1.0 (MJT/1.0). A mobile device (e.g., digital camera or cell phone) can transfer a standard MJT/1.0 job ticket via removable media (e.g., memory card or DVD), direct connect (e.g., USB or parallel), or network interface (e.g., IEEE 802.11 or Ethernet) to a print service or a print device.
For industry coherence, this document imports the semantics (but not the encoding) of the Job and Document objects and selected attributes from the PWG Semantic Model [PWG5105.1].
In order to support low-cost mobile devices, this document defines a compact string encoding (non-XML) for the MJT/1.0, using minimal markup and numeric tokens in place of textual attribute names and values. This encoding also allows the inclusion of vendor extensions as well as other attributes from the complete PWG Semantic Model.
This document is available at:
ftp://ftp.pwg.org/pub/pwg/BOFs/mjt/tb-mjt10-20040824.htm
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. This document may not be modified in any way, including removal of the copyright notice or references to the Printer Working Group, a program of the IEEE-ISTO.
Title: Printer Working Group Micro Job Ticket v1.0 (MJT/1.0)
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 and the Printer Working Group, a program of the IEEE-ISTO take 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 and the Printer Working Group, a program of the IEEE-ISTO invite 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:
info@ieee-isto.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.
About the IEEE-ISTO
The IEEE-ISTO is a not-for-profit corporation offering industry groups an innovative and flexible operational forum and support services. The IEEE Industry Standards and Technology Organization member organizations include printer manufacturers, print server developers, operating system providers, network operating systems providers, network connectivity vendors, and print management application developers. 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.
About the Printer Working Group
The Printer Working Group (or PWG) is a Program of the IEEE-ISTO. All references to the PWG in this document implicitly mean "The Printer Working Group, a Program of the IEEE ISTO." The PWG is chartered to make printers and the applications and operating systems supporting them work together better. In order to meet this objective, the PWG will document the results of their work as open standards that define print related protocols, interfaces, data models, procedures and conventions. Printer manufacturers and vendors of printer related software would 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.
Contact information:
The Printer Working Group c/o The IEEE Industry Standards and Technology Organization 445 Hoes Lane Piscataway, NJ 08854 USA PWG Web Page: http://www.pwg.org/pwg PWG Mailing List: mailto:pwg@pwg.org SM Mailing List: mailto:sm@pwg.org
Instructions for subscribing to the PWG and SM mailing lists can be found at the following link: http://www.pwg.org/mailhelp.html
Members of the PWG and interested parties are encouraged to join the PWG and SM mailing lists in order to participate in discussions, clarifications and review of this document.
The editor of this document can be contacted directly at:
Ira McDonald: mailto@imcdonald@sharplabs.com
This document defines the semantics and encoding for the PWG Micro Job Ticket v1.0 (MJT/1.0), particularly for use by mobile devices for interoperable printing.
Note: It is recommended that the reader first review the MJT/1.0 example in Appendix D and then the brief ABNF in Appendix C before reading the body of this document.
The MJT/1.0 defines a structured human-readable text syntax and encoding for the following three objects:
(1) JobTicket - an envelope for one Job and one or more Documents.
(2) Job - the description and processing instructions for one job.
(3) Document - the description and processing instructions for a single document contained in a Job.
Both mobile client devices (e.g., cell phones and digital cameras) and low-cost print devices (e.g., photo printers) have inherently limited memory and CPU resources, because the retail prices of these devices prohibits the inclusion of the large RAM memory that is currently typical on desktop computers.
Therefore, the inclusion of an XML parser or of the many large string constants necessary to parse any useful XML document instance is not feasible in low-cost devices.
Note: By extension, any printing solution based on Web Services technology (i.e., SOAP-based) is also not feasible in low-cost devices.
If the MJT/1.0 had used some binary encoding of the information set, it would be only marginally more compact than the chosen string encoding. The additional cost and difficulty of development, debugging, and interoperability testing would not offset by the modest benefit of a binary encoding.
For low-cost implementation, the MJT/1.0 adopts a compact, structured string encoding. This string encoding supports the inclusion of any vendor extension (a new attribute for one of the three standard objects) or any other attribute from the complete PWG Semantic Model [PWG5105.1].
For ease of machine generation and parsing, each element in an MJT/1.0 JobTicket instance is explicitly terminated with a mandatory CRLF (carriage return/line feed) sequence (consistent with most ABNF-based encodings).
For safe passage through arbitrary applications, text filters, and command shells, the MJT/1.0 uses the caret '^' to introduce structural markup elements (rather than the more common, but unsafe '.' or '@' or '$').
Consistent with widespread industry practice, the Free Standards Group (FSG) Open Printing project Job Ticket API v1.0 [FSG-JTAPI] defines a JobTicket object as a container for a Job object and associated metadata (e.g., the author of the job ticket).
For industry coherence, the MJT/1.0 imports the JobTicket object and selected attributes from the FSG JTAPI/1.0 [FSG-JTAPI].
Since the Internet Printing Protocol v0.10 (IPP/1.0) [RFC2566] was first published (April 1999), IPP has become ubiquitous in network printers and print systems.
For industry coherence, the MJT/1.0 imports the Job object and selected attributes from the PWG Semantic Model [PWG5105.1]. However, for best interoperability, the MJT/1.0 imports Job attributes _only_ if they were originally defined in IPP/1.0 [RFC2566] (April 1999). The set of values defined for one Job attribute, "finishings", is updated to the larger set defined in IPP/1.1 [RFC2911] (September 2000).
Although over a dozen IETF or PWG "standards track" IPP extensions have been published, most are far less common in deployed network printers and print systems. Therefore, the IPP extensions are _not_ imported by the MJT/1.0 (except for the IPP Document Object [PWG5100.5]).
In IPP/1.0 [RFC2566] and IPP/1.1 [RFC2911], the operation attributes in all Document operations (e.g., Send-Document and Send-URI) are _not_ recorded. The IPP Document Object [PWG5100.5] (October 2003) remedies this shortcoming by introducing a first-class Document object.
Because the MJT/1.0 is entirely declarative (i.e., no network protocol binding is assumed or required), a Document object is absolutely necessary to support multiple documents in a single Job.
For industry coherence, the MJT/1.0 imports the Document object and selected attributes from the PWG Semantic Model [PWG5105.1] and their semantics defined in the IPP Document Object [PWG5100.5] (October 2003).
This document imports the definition and semantics of an Attribute from [RFC2911] and [PWG5105.1].
Note: The MJT/1.0 only defines and supports simple attributes (i.e., an MJT/1.0 attribute cannot be of datatype 'Object' or 'Collection').
An MJT/1.0 Consumer is the software in a target system that reads, decodes, validates, and processes an MJT/1.0 JobTicket instance.
This document imports the definition and semantics of an Object from [RFC2911] and [PWG5105.1].
An MJT/1.0 Producer is the software on a source system that builds, encodes, and writes an MJT/1.0 JobTicket instance.
The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as defined in [RFC2119].
Note: This document restricts the usage and meaning of the terms 'REQUIRED' and 'OPTIONAL' to define MJT/1.0 Producer and Consumer conformance requirements for individual attributes.
Conforming MJT/1.0 Producers MUST supply this attribute and conforming MJT/1.0 Consumers MUST support this attribute.
Conforming MJT/1.0 Producers MAY supply this attribute, conforming MJT/1.0 Consumers MAY support this attribute.
The following diagram shows the object containment in the model:
|----------------------------------------------------------| | | | JobTicket (exactly one) | | - REQUIRED attributes | | - OPTIONAL attributes | | | | |------------------------------------------------------| | | | | | Job (exactly one) | | | - REQUIRED attributes | | | - OPTIONAL attributes | | | | | | |--------------------------------------------------| | | | | | | | Document (one or more) | | | | - REQUIRED attributes | | | | - OPTIONAL attributes | | | | | | | |--------------------------------------------------| | |------------------------------------------------------| |----------------------------------------------------------|
An MJT/1.0 JobTicket object is a container for job ticket processing or description attributes and exactly one embedded MJT/1.0 Job object.
Note: This document imports the semantics of the JobTicket object from the FSG JTAPI/1.0 [FSG-JTAPI].
Note: This document defines the JobTicket object as an extension to the PWG Semantic Model [PWG5105.1].
An MJT/1.0 Job object is a container for job processing or description attributes and one or more embedded MJT/1.0 Document object(s).
Note: This document imports the semantics of the Job object from the PWG Semantic Model [PWG5105.1].
An MJT/1.0 Document object is a container for document processing or description attributes.
Note: This document imports the semantics of the Document object from the PWG Semantic Model [PWG5105.1].
Conformance: Conforming MJT/1.0 Producers or gateway applications that submit MJT/1.0 JobTicket instances to network printers or print systems for interpreting (and printing of the one or more referenced documents) MUST label them with a MIME Content-Type [RFC2046]:
application/octet-stream
The syntax of 'application/octet-stream' MJT/1.0 JobTicket instances is defined in sections 6, 7, and 8 (Narrative) and Appendix A (ABNF) of this document.
Conformance: Conforming MJT/1.0 Producers that store MJT/1.0 JobTicket instances in text files, or transfer them in text streams, or submit them to network printers or print systems for plaintext viewing (not interpreting) MUST label them with a MIME Content-Type [RFC2046]:
text/plain; charset=UTF-8
The syntax of 'text/plain' MJT/1.0 JobTicket instances is defined in sections 6, 7, and 8 (Narrative) and Appendix A (ABNF) of this document.
Conformance: Conforming MJT/1.0 Producers that store MJT/1.0 JobTicket instances in text files, or transfer them in text streams, or submit them for plaintext printing MUST include a "charset" parameter of UTF-8 [RFC3629] in their MIME Content-Type [RFC2046]:
text/plain; charset=UTF-8
The section defines the datatypes used in MJT/1.0 defined attributes for JobTicket, Job, and Document objects. All of these datatypes are encoded in human-readable UTF-8 [RFC3629] text strings in the MJT/1.0 syntax.
ABNF Definition: enum-val = 1*DIGIT ; ASCII decimal string
The Enum datatype only allows one or more decimal digit characters. Valid enum values are defined in the 'Registry' clause in each attribute syntax definition.
ABNF Definition: integer-val = 1*DIGIT ; ASCII decimal string
The Integer datatype only allows one or more decimal digit characters. Valid integer ranges are defined in the 'Synposis' clause in each attribute syntax definition.
ABNF Definition: list-val = DQUOTE list-string DQUOTE ; UTF-8 quoted list ; (without embedded DoubleQuote) list-string = list-text *[COMMA list-text] list-text = *(LCHAR / SP / XCHAR) ; List ASCII, Space, or UTF-8 COMMA = %x2C ; Comma DQUOTE = %x22 ; DoubleQuote SP = %x20 ; Space LCHAR = %x21 / %x23-2B / %x2D-7E ; List ASCII (no Comma, DQuote) XCHAR = %x80-FF ; UTF-8 character fragments
The List datatype allows a comma-delimited list of one or more text strings enclosed in DoubleQuote characters. Valid list elements are defined in the 'Synposis' clause and/or 'Description' clause in each attribute syntax definition.
ABNF Definition: string-val = DQUOTE string-text DQUOTE ; UTF-8 quoted string ; (without embedded DoubleQuote) string-text = *(TCHAR / SP / XCHAR) ; Visible ASCII, Space, or UTF-8 DQUOTE = %x22 ; DoubleQuote SP = %x20 ; Space TCHAR = %x21 / %23-7E ; Visible ASCII (no DoubleQuote) XCHAR = %x80-FF ; UTF-8 character fragments
The String datatype allows any visible ASCII character, Space, or visible extended UTF-8 character (above 0x7F) enclosed in DoubleQuote characters. Valid string values MAY be defined or constrained in the 'Synposis' clause and/or 'Description' clause in each attribute syntax definition.
ABNF Definition: uri-val = DQUOTE URI DQUOTE ; UTF-8 quoted URI ; (without embedded DoubleQuote) URI = *(TCHAR) ; Visible ASCII (w/ hex escapes) DQUOTE = %x22 ; DoubleQuote TCHAR = %x21 / %23-7E ; Visible ASCII (no DoubleQuote)
The URI datatype encloses in DoubleQuote characters any visible ASCII character (except DoubleQuote) or visible extended UTF-8 character (above 0x7F) encoded as an [RFC2396] hex escape sequence. For example:
%E4%B9%82%2E
represents the single [ISO10646] character 'U+4E42'.
Valid URI schemes MAY be defined or constrained in the 'Synposis' clause and/or 'Description' clause in each attribute syntax definition.
See: "Escape Sequences" section 2.4 of [RFC2396].
This section defines the syntax and encoding of a conforming MJT/1.0 JobTicket instance, i.e., a human-readable UTF-8 [RFC3629] text file or text stream.
Synopsis: ^pwg:JobTicket 1*<REQUIRED JobTicket attributes> 0*<OPTIONAL JobTicket attributes> 1<Job object> 1*<Document object> ^/pwg:JobTicket Example: See Appendix D.
Description: The JobTicket object is used to specify job ticket processing and/or description attributes.
Conformance: Conforming MJT/1.0 Producers MUST supply exactly one JobTicket object in a each JobTicket instance. Conforming MJT/1.0 Consumers MUST validate this JobTicket object and MUST reject any malformed value (and abort processing of the current JobTicket instance).
Conformance: Conforming MJT/1.0 Producers MUST supply and conforming MJT/1.0 Consumers MUST support every attribute listed in this section.
Synopsis: 101="..." Example: 101="mjt10" -- MJT/1.0 type and version Registry: JobTicketTypeAndVersion(101)
Description: This REQUIRED JobTicket attribute specifies the type (MJT, JDF, etc.) and syntax version for the current JobTicket instance.
Conformance: Conforming MJT/1.0 Producers MUST supply a string value of "mjt10" for this JobTicket attribute and MUST supply this as the first attribute in the JobTicket instance. Conforming MJT/1.0 Consumers MUST validate this JobTicket attribute and MUST reject any string value other than "mjt10" (and abort processing of the current JobTicket instance).
See: "jt-type-and-version" in FSG JTAPI/1.0 [FSG-JTAPI]
Conformance: Conforming MJT/1.0 Producers MAY supply and conforming MJT/1.0 Consumers MAY support any attribute listed in this section.
Synopsis: 151="..." Example: 151="James McIntyre" -- job ticket author Registry: JobTicketAuthor(151)
Description: This OPTIONAL JobTicket attribute specifies a human-readable author name for the current JobTicket instance.
Conformance: Conforming MJT/1.0 Producers MAY supply this JobTicket attribute. Conforming MJT/1.0 Consumers MAY validate this JobTicket attribute and MUST NOT reject any malformed string value.
See: "jt-author" in FSG JTAPI/1.0 [FSG-JTAPI]
Synopsis: 152="..." Example: 152="3 copies of my photos" -- job ticket comment Registry: JobTicketComment(152)
Description: This OPTIONAL JobTicket attribute specifies a human-readable comment for the current JobTicket instance.
Conformance: Conforming MJT/1.0 Producers MAY supply this JobTicket attribute. Conforming MJT/1.0 Consumers MAY validate this JobTicket attribute and MUST NOT reject any malformed string value.
See: "jt-comment" in FSG JTAPI/1.0 [FSG-JTAPI]
Synopsis: 153="URI" Example: 153="ftp://example.com/tickets/jt-123.txt" Registry: JobTicketIncludeURI(153)
Description: This OPTIONAL JobTicket attribute specifies a URI of another JobTicket (or JobTicket fragment) that is to be included in the current Job Ticket instance (immediately before the embedded Job object).
Conformance: Conforming MJT/1.0 Producers MAY supply this JobTicket attribute. Conforming MJT/1.0 Consumers MUST validate this JobTicket attribute and MUST reject any malformed or unreachable URI (and abort processing of the current JobTicket instance).
Synopsis: 154=Enum Example: 154=4 -- micrometers Registry: JobTicketLengthUnit(154) none(0) other(1) unknown(2) tenThousandthsOfInches(3) -- FSG JTAPI/1.0 / Prt MIB v2 micrometers(4) -- FSG JTAPI/1.0 / Prt MIB v2 points(5) -- FSG JTAPI/1.0 only
Description: This OPTIONAL JobTicket attribute specifies the common length unit used in all dimension attributes for the current JobTicket instance.
Conformance: Conforming MJT/1.0 Producers MAY supply this JobTicket attribute. Conforming MJT/1.0 Consumers MUST validate this JobTicket attribute and MUST reject any unsupported value (and abort processing of the current JobTicket instance).
See: "jt-length-unit" in FSG JTAPI/1.0 [FSG-JTAPI]
See: "PrtMediaUnitTC" in Printer MIB v2 [PRTMIBv2]
Synopsis: 155="Attr1,...,AttrN" Example: 155="201,252" -- media and finishings on Job <or> 155="pwg.JobMedia,pwg.JobFinishings" Registry: JobTicketMandatoryAttributes(155)
Description: This OPTIONAL JobTicket attribute specifies the comma-delimited list of Job and/or Document attributes that are mandatory (Consumer MUST NOT ignore) in the current JobTicket instance.
Note: This document imports this attribute from the [FSG-JTAPI] JobTicket object (instead of "job-mandatory-attributes" from the Job object as defined in [PWG5100.7]), in order to support mandatory attributes in all three objects (i.e., JobTicket, Job, and Document) using a single attribute.
Conformance: Conforming MJT/1.0 Producers MAY supply a string value for this JobTicket attribute. Conforming MJT/1.0 Producers MUST specify the list values of PWG defined attributes as numeric tokens, instead of (namespace-qualified) labels. Conforming MJT/1.0 Consumers MUST validate this JobTicket attribute and ensure that ALL mandatory attributes are honored or else MUST abort processing of the current JobTicket instance.
See: "jt-mandatory-attributes" in FSG JTAPI/1.0 [FSG-JTAPI]
Synopsis: 156="Tag,URI" Example: 156="vnd,http://example.com/mjt-namespace.txt" -- Vendor ABNF Registry: JobTicketNamespace(156)
Description: This OPTIONAL JobTicket attribute specifies a tag and a URI that defines one of the namespaces for the current JobTicket instance. Standard tag values are 'pwg' (PWG Semantic Model) and 'vnd' (Vendor Extension).
Conformance: Conforming MJT/1.0 Producers MAY supply this JobTicket attribute. Conforming MJT/1.0 Consumers MUST validate this JobTicket attribute and MUST reject any malformed or unreachable namespace URI (and abort processing of the current JobTicket instance).
Synopsis: 157="..." Example: 157="en-us" -- English as spoken in US Registry: JobTicketNaturalLanguage(157)
Description: This OPTIONAL JobTicket attribute specifies the language tag [RFC3066] for the interpretation and transformation (e.g., text-to-speech) of all text string attributes in the current JobTicket instance in JobTicket, Job, and Document objects (but NOT for the interpretation of URI string attributes).
Note: This document imports this attribute from the [FSG-JTAPI] JobTicket object (instead of "job-attributes-natural-language" from the Job object as defined in [RFC2910]), in order to support text string attributes in all three objects (i.e., JobTicket, Job, and Document) using a single attribute.
Conformance: Conforming MJT/1.0 Producers MAY supply a string value for this JobTicket attribute. Conforming MJT/1.0 Consumers MUST validate this JobTicket attribute and MAY ignore OR reject any unsupported value (and abort processing of the current JobTicket instance).
This section defines the syntax and encoding of a conforming MJT/1.0 Job instance, i.e., a human-readable UTF-8 [RFC3629] text file fragment or text stream.
Synopsis: ^pwg:Job 1*<REQUIRED Job attributes> 0*<OPTIONAL Job attributes> 1*<Document object> ^/pwg:Job Example: See Appendix D.
Description: The Job object is used to specify job processing and/or description attributes.
Conformance: Conforming MJT/1.0 Producers MUST supply exactly one Job object in a each JobTicket instance. Conforming MJT/1.0 Consumers MUST validate this Job object and MUST reject any malformed value (and abort processing of the current JobTicket instance).
Conformance: Conforming MJT/1.0 Producers MUST supply and conforming MJT/1.0 Consumers MUST support every attribute listed in this section.
Synopsis: 201="..." Example: 201="iso_a4_210x297mm" -- ISO A4 letter Registry: JobMedia(201)
Description: This REQUIRED Job attribute specifies the media size or media type for the current Job instance.
Note: Media tray names (see [RFC2911]) are not supported in MJT/1.0.
Conformance: Conforming MJT/1.0 Producers MUST supply a conforming PWG self-describing media size name [PWG5101.1] or PWG media type name [PWG5101.1] for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MUST reject any unsupported value (and abort processing of the current JobTicket instance).
See: "media" section 4.2.11 of [RFC2911]
See: "Media Size Self-Describing Names" section 5 of [PWG5101.1]
See: "Media Type Names" section 3 of [PWG5101.1]
See: "media-size" section 3.13.8 of [PWG5100.3]
See: "media-type" section 3.13.2 of [PWG5100.3]
Conformance: Conforming MJT/1.0 Producers MAY supply and conforming MJT/1.0 Consumers MAY support any attribute listed in this section.
Synopsis: 251=(1..MAX) Example: 251=3 -- 3 copies of this job Registry: JobCopies(251)
Description: This OPTIONAL Job attribute specifies the number of copies to print for the current Job instance.
Conformance: Conforming MJT/1.0 Producers MAY supply an integer value for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MUST reject any unsupported value (and abort processing of the current JobTicket instance).
See: "copies" section 4.2.5 of [RFC2911]
Synopsis: 252="Enum1,...,EnumN" Example: 252="4,6" -- staple and cover Registry: JobFinishings(252) none(0) other(1) unknown(2) noneReserved(3) -- duplicate 'none' in [RFC2911] -- generic finishing types staple(4) punch(5) cover(6) bind(7) saddleStitch(8) edgeStitch(9) -- 10-19 reserved for future generic finishing types -- specific finishing types stapleTopLeft(20) stapleBottomLeft(21) stapleTopRight(22) stapleBottomRight(23) edgeStitchLeft(24) edgeStitchTop(25) edgeStitchRight(26) edgeStitchBottom(27) stapleDualLeft(28) stapleDualTop(29) stapleDualRight(30) stapleDualBottom(31)
Description: This OPTIONAL Job attribute specifies the comma-delimited list of finishing processes (if any) to be applied to the output media sheets for the current Job instance.
Conformance: Conforming MJT/1.0 Producers MAY supply a string value for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MAY ignore OR reject any unsupported value (and abort processing of the current JobTicket instance).
See: "finishings" section 4.2.6 of [RFC2911]
Synopsis: 253="..." Example: 253="Bermuda Trip" -- job name Registry: JobName(253)
Description: This OPTIONAL Job attribute specifies the human-readable name for the current Job instance.
Conformance: Conforming MJT/1.0 Producers MAY supply a string value for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MUST reject any malformed value (and abort processing of the current JobTicket instance).
See: "job-name" section 4.3.5 of [RFC2911]
Synopsis: 254=(1..MAX) Example: 254=4 -- 4-up printing of pages Registry: JobNumberUp(251)
Description: This OPTIONAL Job attribute specifies the number of input document pages to be printed in each output impression (one side of a media sheet) for the current Job instance.
Conformance: Conforming MJT/1.0 Producers MAY supply an integer value for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MUST reject any unsupported value (and abort processing of the current JobTicket instance).
See: "number-up" section 4.2.9 of [RFC2911]
Synopsis: 255=Enum Example: 255=4 -- landscape printing Registry: JobOrientationRequested(255) none(0) other(1) unknown(2) portrait(3) landscape(4) reverseLandscape(5) reversePortrait(6)
Description: This OPTIONAL Job attribute specifies the requested orientation of the print stream pages for the current Job instance.
Conformance: Conforming MJT/1.0 Producers MAY supply an integer value for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MAY ignore OR reject any unsupported value (and abort processing of the current JobTicket instance).
See: "orientation-requested" section 4.2.10 of [RFC2911]
Synopsis: 256="resX,resY,unit" Example: 256="600,600,dpi" -- 600x600 dots per inch Registry: JobPrinterResolution(256)
Description: This OPTIONAL Job attribute specifies the comma-delimited list of X and Y resolutions and their units for the current Job instance. Standard units are 'dpi' (dots per inch) and 'dpcm' (dots per centimeter).
Conformance: Conforming MJT/1.0 Producers MAY supply a string value for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MAY ignore OR reject any unsupported value (and abort processing of the current JobTicket instance).
See: "printer-resolution" section 4.2.12 of [RFC2911]
See: "resolution" section 4.1.15 of [RFC2911]
Synopsis: 257="URI" Example: 257="ipp://example.com/printers/pr1" Registry: JobPrinterURI(257)
Description: This OPTIONAL Job attribute specifies the target print system or print device for the current Job instance.
Conformance: Conforming MJT/1.0 Producers MAY supply a string value URI for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MUST reject any malformed or unreachable URI (and abort processing of the current JobTicket instance).
See: "job-printer-uri" section 4.3.3 of [RFC2911]
Synopsis: 258=Enum Example: 258=5 -- high print quality Registry: JobPrintQuality(258) none(0) other(1) unknown(2) draft(3) normal(4) high(5)
Description: This OPTIONAL Job attribute specifies the print quality to be used for the current Job instance.
Conformance: Conforming MJT/1.0 Producers MAY supply an integer value for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MAY ignore OR reject any unsupported value (and abort processing of the current JobTicket instance).
See: "print-quality" section 4.2.13 of [RFC2911]
Synopsis: 259=Enum Example: 259=4 -- two-sided duplex printing Registry: JobSides(259) none(0) other(1) unknown(2) oneSided(3) twoSidedLongEdge(4) -- duplex in any orientation twoSidedShortEdge(5) -- tumble in any orientation
Description: This OPTIONAL Job attribute specifies the number of sides to use on each media sheet and the duplex or tumble mode for a two-sided choice for the current Job instance.
Conformance: Conforming MJT/1.0 Producers MAY supply an integer value for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MAY ignore OR reject any unsupported value (and abort processing of the current JobTicket instance).
See: "sides" section 4.2.8 of [RFC2911]
Synopsis: 260=Enum Example: 260=0 -- no job sheets Registry: JobSheets(260) none(0) other(1) unknown(2) standard(3) -- one or more site-specific
Description: This OPTIONAL Job attribute specifies the job sheets (e.g., start sheet or end sheet) to be printed for the current Job instance.
Conformance: Conforming MJT/1.0 Producers MAY supply an integer value for this Job attribute. Conforming MJT/1.0 Consumers MUST validate this Job attribute and MAY ignore OR reject any unsupported value (and abort processing of the current JobTicket instance).
See: "job-sheets" section 4.2.3 of [RFC2911]
This section defines the syntax and encoding of a conforming MJT/1.0 Document instance, i.e., a human-readable UTF-8 [RFC3629] text file fragment or text stream.
Synopsis: ^pwg:Document 1*<REQUIRED Document attributes> 0*<OPTIONAL Document attributes> ^/pwg:Document Example: See Appendix D.
Description: The Document object is used to specify document processing and/or description attributes.
Conformance: Conforming MJT/1.0 Producers MUST supply one or more Document objects in a each JobTicket instance. Conforming MJT/1.0 Consumers MUST validate this Document object and MUST reject any malformed value (and abort processing of the current JobTicket instance).
Conformance: Conforming MJT/1.0 Producers MUST supply and conforming MJT/1.0 Consumers MUST support every attribute listed in this section.
Synopsis: 301=Enum Example: 301=102 -- Adobe Acrobat PDF Registry: DocumentFormat(301) none(0) other(1) unknown(2) application/octet-stream(101) -- auto sense application/pdf(102) -- Adobe Acrobat PDF application/postscript(103) -- Adobe PostScript application/vnd.hp-PCL(104) -- Hewlett-Packard PCL application/xhtml+xml(105) -- XHTML (RFC 3236) application/xml(106) -- XML (RFC 3023) image/gif(201) -- GIF (RFC 2045, RFC 2046) image/jpeg(202) -- JPEG (RFC 2045, RFC 2046) image/tiff(203) -- TIFF (RFC 3302) text/html(301) -- HTML (RFC 2854) text/plain(302) -- Text (RFC 2046) text/xml(303) -- XML (RFC 3023)
Description: This REQUIRED Document attribute specifies the format and encoding for the data specified by DocumentURI for the current Document instance.
Conformance: Conforming MJT/1.0 Producers MUST supply an integer value MIME-type for this Document attribute. Conforming MJT/1.0 Consumers MUST validate this Document attribute and MUST reject any unsupported value (and abort processing of the current JobTicket instance).
See: "document-format" section 9.1.12 of [PWG5100.5]
Synopsis: 302="URI" Example: 302="http://example.com/pictures/778.jpg" Registry: DocumentURI(302)
Description: This REQUIRED Document attribute specifies the location for the data for the current Document instance.
Conformance: Conforming MJT/1.0 Producers MUST supply a string value URI for this Document attribute. Conforming MJT/1.0 Consumers MUST validate this Document attribute and MUST reject any malformed or unreachable URI (and abort processing of the current JobTicket instance).
See: "document-uri" section 9.1.28 of [PWG5100.5]
Conformance: Conforming MJT/1.0 Producers MAY supply and conforming MJT/1.0 Consumers MAY support any attribute listed in this section.
Synopsis: 351=Enum Example: 351=106 -- UTF-8 [RFC3629] Registry: DocumentCharset(351)
Description: This OPTIONAL Document attribute specifies the IANA registered charset MIB enum value of the character set for the data specified by DocumentURI for the current Document instance (especially useful for 'text/xxx' MIME-types for "DocumentFormat").
Conformance: Conforming MJT/1.0 Producers MAY supply a string value for this Document attribute. Conforming MJT/1.0 Consumers MUST validate this Document attribute and MUST reject any unsupported value (and abort processing of the current JobTicket instance).
See: "document-charset" section 9.1.10 of [PWG5100.5]
See: "http://ftp.iana.org/assignments/character-sets" [IANA-CHAR]
Synopsis: 352=Enum Example: 352=4 -- GNU ZIP compression Registry: DocumentCompression(352) none(0) other(1) unknown(2) deflate(3) -- Public ZIP - see RFC 1951 gzip(4) -- GNU ZIP - see RFC 1952 compress(5) -- UNIX - see RFC 1977
Description: This OPTIONAL Document attribute specifies the compression (if any) for the data specified by DocumentURI for the current Document instance.
Conformance: Conforming MJT/1.0 Producers MAY supply an integer value for this Document attribute. Conforming MJT/1.0 Consumers MUST validate this Document attribute and MUST reject any unsupported value (and abort processing of the current JobTicket instance).
See: "compression" section 9.1.3 of [PWG5100.5]
See: "compression-supported" section 4.4.32 of [RFC2911]
Synopsis: 353=Enum Example: 353=4 -- PGP digital signature Registry: DocumentDigitalSignature(353) none(0) other(1) unknown(2) dss(3) -- DSS - see US FIPS 186-1 pgp(4) -- PGP - see RFC 1991/ RFC 2440 smime(5) -- S/MIME - see RFC 2634 xmldsig(6) -- XML DigitalSig - see RFC 3275
Description: This OPTIONAL Document attribute specifies the digital signature (if any) present in the data specified by DocumentURI for the current Document instance.
Conformance: Conforming MJT/1.0 Producers MAY supply an integer value for this Document attribute. Conforming MJT/1.0 Consumers MUST validate this Document attribute and MUST reject any unsupported value (and abort processing of the current JobTicket instance).
See: "document-digital-signature" section 9.1.11 of [PWG5100.5]
See: "document-digital-signature" section 3.2.3 of [PWG5100.7]
See: "document-digital-signature-supported" section 7.4 of [PWG5100.7]
Synopsis: 354="..." Example: 354="PDF/is-1.0" -- PDF/is v1.0 [PWG5102.3] Registry: DocumentFormatVersion(354)
Description: This OPTIONAL Document attribute specifies the format and version for the data specified by DocumentURI for the current Document instance.
Conformance: Conforming MJT/1.0 Producers MAY supply a string value for this Document attribute. Conforming MJT/1.0 Consumers MUST validate this Document attribute and MUST reject any unsupported value (and abort processing of the current JobTicket instance).
See: "document-format-version" section 9.1.13 of [PWG5100.5]
Synopsis: 355="..." Example: 355="Bermuda Sunset" -- document name Registry: DocumentName(355)
Description: This OPTIONAL Document attribute specifies the human-readable name for the current Document instance.
Conformance: Conforming MJT/1.0 Producers MAY supply a string value for this Document attribute. Conforming MJT/1.0 Consumers MUST validate this Document attribute and MUST reject any malformed value (and abort processing of the current JobTicket instance).
See: "document-name" section 9.1.21 of [PWG5100.5]
Synopsis: 356="..." Example: 356="en-us" -- English as spoken in US Registry: DocumentNaturalLanguage(356)
Description: This OPTIONAL Document attribute specifies the language tag [RFC3066] for the data specified by DocumentURI for the current Document instance (especially useful for 'text/xxx' MIME-types for "DocumentFormat").
Conformance: Conforming MJT/1.0 Producers MAY supply a string value for this Document attribute. Conforming MJT/1.0 Consumers MUST validate this Document attribute and MAY ignore OR reject any unsupported value (and abort processing of the current JobTicket instance).
See: "document-natural-language" section 9.1.22 of [PWG5100.5]
Conforming MJT/1.0 Producers:
(1) MUST support and supply every REQUIRED JobTicket attribute (see section 6.1).
(2) MUST support and supply every REQUIRED Job attribute (see section 7.1).
(3) MUST support and supply every REQUIRED Document attribute (see section 8.1).
Conforming MJT/1.0 Consumers:
(1) MUST support and validate every REQUIRED JobTicket attribute (see section 6.1).
(2) MUST support and validate every REQUIRED Job attribute (see section 7.1).
(3) MUST support and validate every REQUIRED Document attribute (see section 8.1).
The PWG secretary should durably register all of the MJT/1.0 object and attribute names, as well as all attribute enumerated values and their enum tags.
MJT/1.0 implementations will always conform to all the best practice recommendations in "IETF Policy on Character Sets and Languages" [RFC2277].
The charset of MJT/1.0 JobTicket instances is fixed as UTF-8 [RFC3629].
The natural language of the attributes in an MJT/1.0 JobTicket instance MAY be supplied by a conforming MJT/1.0 Producer using the JobTicket attribute "JobTicketNaturalLanguage".
The charset of the document data referenced in an MJT/1.0 Document instance MAY be supplied by a conforming MJT/1.0 Producer using the Document attribute "DocumentCharset".
The natural language of the document data referenced in an MJT/1.0 Document instance MAY be supplied by a conforming MJT/1.0 Producer using the Document attribute "DocumentNaturalLanguage".
Security considerations for the use of MJT/1.0 JobTicket instances (because they contain remote executable content) are the same as those for the 'application/postscript' MIME Content-Type defined in [RFC2046].
[ISO10646] Information Technology - Universal Multiple-Octet Coded Character Set (UCS). ISO/IEC International Standard 10646.
[ISO10646-1] Information Technology - UCS Part 1: Architecture and Basic Multilingual Plane. ISO/IEC 10646-1:2000.
[ISO10646-2] Information Technology - UCS Part 2: Supplementary Planes. ISO/IEC 10646-2:2001.
[PWG5100.3] Hastings, Zehler. Internet Printing Protocol (IPP): Production Printing Attributes - Set1, PWG 5100.3, February 2001.
[PWG5100.5] Hastings, Zehler. Internet Printing Protocol (IPP): Document Object, PWG 5100.5, October 2003.
[PWG5100.7] Hastings, Zehler. Internet Printing Protocol (IPP): Job Extensions, PWG 5100.7, October 2003.
[PWG5101.1] Bergman. Standard for Media Standardized Names, PWG 5101.1, February 2002.
[PWG5105.1] Zehler et al. PWG Semantic Model/1.0, PWG 5105.1, January 2004.
[RFC2046] Freed, Borenstein. MIME Part Two: Media Types, RFC 2046, November 1996.
[RFC2119] Bradner. Keywords for Use in RFCs to Indicate Requirement Levels, RFC 2119, March 1997.
[RFC2234] Crocker, Overell. Augmented BNF for Syntax Specifications (ABNF), RFC 2234, November 1997.
[RFC2396] Berners-Lee, Fielding, Masinter. URI Generic Syntax, RFC 2396, August 1998.
[RFC2911] Hastings, Herriot, deBry, Isaacson, Powell. Internet Printing Protocol/1.1: Model and Semantics, RFC 2911, September 2000.
[RFC3066] Alvestrand. Tags for the Identification of Languages. RFC 3066, January 2001.
[RFC3629] Yergeau. UTF-8, a Transformation Format of ISO 10646, RFC 3629, November 2003.
[RFC2566] Hastings, Herriot, deBry, Isaacson, Powell. Internet Printing Protocol/1.0: Model and Semantics, RFC 2566, April 1999.
[to be supplied]
Conformance: Conforming MJT/1.0 Producers or gateway applications that submit MJT/1.0 JobTicket instances to IPP/1.0 [RFC2566] or IPP/1.1 [RFC2911] network printers or print systems for interpreting (and printing of the one or more referenced documents) MUST label them with a MIME Content-Type [RFC2046] in the IPP "document-format" operation attribute:
application/octet-stream
Conformance: Conforming MJT/1.0 Producers or gateway applications that submit MJT/1.0 JobTicket instances to IPP/1.0 [RFC2566] or IPP/1.1 [RFC2911] network printers or print systems for plaintext printing (not interpreting) MUST label them with a MIME Content-Type [RFC2046] in the IPP "document-format" operation attribute:
text/plain; charset=UTF-8
; JobTicket object jobticket = jt-begin *jt-req *jt-opt job jt-end jt-begin = "^pwg:JobTicket" CRLF jt-end = "^/pwg:JobTicket" CRLF jt-req = req-attr jt-opt = opt-attr ; Job object job = job-begin *job-req *job-opt *document job-end job-begin = "^pwg:Job" CRLF job-end = "^/pwg:Job" CRLF job-req = req-attr job-opt = opt-attr ; Document object document = doc-begin *doc-req *doc-opt doc-end doc-begin = "^pwg:Document" CRLF doc-end = "^/pwg:Document" CRLF doc-req = req-attr doc-opt = opt-attr ; Attribute syntaxes req-attr = attr-enum "=" (integer-val / string-val) CRLF opt-attr = (attr-enum "=" (integer-val / string-val) CRLF) / (attr-qname "=" (integer-val / string-val) CRLF) ; Attribute identifiers attr-enum = 1*DIGIT attr-qname = attr-ns ":" attr-name attr-ns = "pwg" / "vnd" / 1*LOWERALPHA attr-name = 1UPPERALPHA *ALPHA ; Attribute values integer-val = 1*DIGIT ; ASCII decimal string string-val = DQUOTE string-text DQUOTE ; UTF-8 quoted string ; (without embedded DoubleQuote) string-text = *(TCHAR / SP / XCHAR) ; Visible ASCII, Space, or UTF-8 ; Range definitions TCHAR = %x21 / %23-7E ; Visible ASCII (no DoubleQuote) XCHAR = %x80-FF ; UTF-8 character fragments DIGIT = %30-39 ; 0-9 (decimal digit) ALPHA = %41-5A / %x61-7A ; A-z / a-z (any case alpha) LOWERALPHA = %x61-7A ; a-z (lowercase alpha) UPPERALPHA = %x41-5A ; A-Z (uppercase alpha) ; Character definitions CRLF = CR LF ; Line Break CR = %x0D ; Carriage Return DQUOTE = %x22 ; DoubleQuote LF = %x0A ; Line Feed SP = %x20 ; Space
^pwg:JobTicket -- begin job ticket 101="mjt10" -- type and version 155="201,252" -- media and finishings on job mandatory 156="vnd,http://example.com/mjt-namespace.txt" -- Vendor ABNF ^pwg:Job -- begin job 201="iso_a4_210x297mm" -- ISO A4 letter 251=3 -- 3 copies of this job 252="4,6" -- staple and cover finishings on job vnd:251=50 -- vendor extension 'JobZoom' ^pwg:Document -- begin document 301=202 -- JPEG document format 302="http://example.com/pictures/778.jpg" -- document URI 355="Bermuda Sunset" -- document name vnd:351=3 -- vendor extension 'DocumentSharpening' ^/pwg:Document -- end document ^/pwg:Job -- end job ^/pwg:JobTicket -- end job ticket