March 31, 2003
Copyright 2001-2003
Printer Working Group, All
Rights Reserved.
XTHML is a trademark of the World Wide Web Consortium.
HTML 4 is a powerful language for authoring Web content, but its design does not take into consideration issues pertinent to printers, including the implementation cost (in power, memory, etc.) of the full feature set. Printers have relatively limited resources that cannot generally afford to implement the full feature set of HTML 4.
Because there are many ways to subset HTML, there are many almost identical subsets defined by organizations and companies. Without a common base set of features, developing print applications for a wide range of printers is difficult.
XHTML-Print's targeted usage is for printing in environments where it is not feasible or desirable to install a printer-specific driver and where some variability in the formatting of the output is acceptable.
The document type definition for XHTML-Print is implemented based on the XHTML modules defined in Modularization of XHTML [XHTMLMOD].
This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this document series is maintained at the PWG.
All sections of this document are normative unless noted as informative.
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: The Printer Working Group Proposed Standard XHTML-Print
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 email 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.
This document is a working draft and only a working draft. It is currently being reviewed by PWG Members but has not been approved. It is not a stable document and may not be used as reference material nor cited as a normative reference from another document.
Public discussion of XHTML-Print takes place on the mailing list: xp@pwg.org ( archive). To subscribe send an email to majordomo@pwg.org with the words subscribe xp in the body. You must be subscribed to the mailing list to post there. Please report errors in this document to one of the editors listed above or on the mailing list.
A list of current PWG Standards and other technical documents can be found at http://www.pwg.org/standards.html
Note: The following review conventions are used in this document:
This is an example of a comment written by the editor. The comment is meant to aide discussions of the document and will not appear in the final draft.
This section is informative.
This document specifies a simple XHTML based data stream suitable for printing as well as display. It is based on the W3C's XHTML Basic [XHTMLBASIC] with the addition of cascading style sheets (CSS) [CSSPP] . Its targeted usage is for printing in environments where it is not feasible or desirable to install a printer-specific driver and where some variability in the formatting of the output is acceptable. Throughout this document this data stream is called "XHTML-Print."
XHTML-Print is designed to be appropriate for low-cost printers that may not have a full-page buffer and that generally print from top-to-bottom and left-to-right with the paper in a portrait orientation. For other printers (i.e., those that print in another direction or orientation) a full-page buffer may be required.
XHTML-Print is not appropriate when strict layout consistency and repeatability across printers are required. The design objective of XHTML-Print is to provide a relatively simple, broadly supportable page description format where content preservation and reproduction are the goal, i.e. "Content is King." Traditional printer page description formats such as PostScript or PCL are more suitable when strict layout control is required. XHTML-Print does not utilize bi-directional communications with the printer either for capabilities or status inquiries.
This document creates a set of conformance criteria for XHTML-Print. It references style sheet constructs drawn from CSS2 [CSS2] and proposed for CSS3 [CSS3] as defined in the CSS Print Profile [CSSPP] to provide a strong basis for rich printing results without a detailed understanding of each individual printer's characteristics.
It also defines an extension set that provides stronger layout control for the printing of mixed text and images, tables and image collections.
The document type definition for XHTML-Print is implemented based on the XHTML modules defined in Modularization of XHTML [XHTMLMOD].
The keywords "MUST", "SHALL", "MUST NOT", "SHALL NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" when used in this document are to be interpreted as described in RFC 2119 [RFC2119]. However, for readability, these words do not appear in all uppercase letters in this specification.
This section explains why certain HTML features are not part of XHTML-Print.
The script
and noscript
elements are not supported
as a printer lacks typical user interaction necessary for a script.
Content of the script should not be printed.
Events are not applicable to static, printed versions of a document. Therefore, the Intrinsic Events module is not part of XHTML-Print.
Many simple printers cannot print a wide variety of fonts other than the generic serif, san serif and monospace. It is recommended that style sheets be used to create a presentation that is appropriate for a particular category of printer. How printers are categorized, what those categories are, how a printer identifies itself as a member of a category, and how style sheets are selectively applied based on category, is outside the scope of this document.
The Presentation module, section 5.4.1 of [XHTMLMOD] is supported since it allows a very simple user agent to support font variants. The module contains elements that are both structural and presentational, provides the only method for specifying rules (the hr element), and allows very simple clients that might not support CSS the means for identifying font variants such as bold, italic, superscript and subscript. Supporting this module allows a client to render these common elements in a manner that is appropriate for its capabilities.
Basic XHTML forms, section 5.5.1 [XHTMLMOD] are supported. Content developers should keep in mind that users may not be able to input many characters from some devices (e.g. from a mobile phone). Note that a printer prints a static version of a form, and the visual appearance of a form depends heavily on the implementation.
Basic XHTML tables, section 5.6.1 [XHTMLMOD] are supported, but tables can be difficult to format on very low resourced devices. Note that in the Basic Tables Module, nesting of tables is prohibited.
Frames are not supported. Frames depend on a screen interface and therefore are not applicable to printers.
XHTML-Print is a member of the family of XHTML languages defined by [XHTMLMOD]. Therefore, the elements and attributes in the modules that make up XHTML-Print are all valid constructs of the language. However, not all the attributes are applicable to a rendering of an XHTML-Print document in a printed media, especially those that are integral to a dynamic display of the document in a browser and the submission of a form. Furthermore, special attention is given to simple printers and some attributes are deemed too complex for a such a printer to render. These attributes are treated as discretionary in that a conforming printer is not required to support them, but should a printer wish to provide that support there are requirements stated for consistency in the implementation of extensions.
A conforming XHTML-Print document is a document that requires only the facilities described as mandatory in this specification. Such a document shall meet all of the following criteria:
<html>
. http://www.w3.org/1999/xhtml
. The MIME type used to refer to a conforming XHTML-Print document shall be "application/vnd.pwg-xhtml-print+xml". An optional "charset" parameter may be provided with the MIME type. Usage of the optional "charset" parameter is as described in section 3.2 of [RFC3023].
Additionally, printers may support a MIME type of "application/xhtml+xml" with a profile of "http://www.xhtml-print.org/xhtml-print/xhtml-print10.dtd". Not all printers will support this option, therefore clients cannot always depend upon it. Use of a profile is as described in section 2 and section 8 of [RFC3236].
<script>
.
To further support print applications requiring more exacting page layout (e.g., photo album pages), the style sheet properties of the Enhanced Layout Extension of the CSS Print Profile ([CSSPP] section 2.1) and image processing (Appendix A.3) shall be supported in an optional, discoverable (via some means outside the scope of this document) Enhanced Layout Extension.
The following is an informative example using absolute positioning with image data:
The XHTML-Print document type is defined as a set of XHTML modules. All XHTML modules are defined in the "Modularization of XHTML" specification [XHTMLMOD].
XHTML-Print consists of the following XHTML modules:
body, head, html, title
abbr, acronym, address, blockquote, br, cite, code, dfn, div, em,
h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, var
a
dl, dt, dd, ol, ul, li
b, big, hr, i, small, sub, sup, tt
form, input, label, select, option, textarea
caption, table, td, th, tr
img
object, param
meta
style
style
attribute link
base
(*) = This module is a required XHTML
Host Language module.
(**) = These modules are not a part of XHTML Basic
but are required for XHTML-Print.
An XML 1.0 DTD is available in Appendix C.
NOTE: Since the HTML event handler attributes are not included in XHTML-Print, form controls outside forms may not function as expected by the user.
HTML allows binary attributes to be given without
a value, e.g. <option selected>
.
However, XML, and hence XHTML 1.0 languages,
requires all attributes to take a
value. Thus in XHTML-Print these shall be given with a cloned value
(e.g. selected="selected").
Some of the attributes defined in [XHTMLMOD] are not applicable to the printed page or are not relevant due to the exclusion of their module from XHTML-Print. Other attributes have equivalent CSS properties that when present take precedence over the attribute. Other attributes are not required but if supported by a printer, support should be provided in the recommended manner.
Each attribute in the following sections is annotated to indicate how it should be treated by a conforming printer:
Key | Description |
---|---|
Yes | Support is manditory; a conforming printer must honor this attribute; |
No | Support is optional;
a conforming printer may ignore this attribute for one of the following reasons,
but cannot treat it as an error:
|
The Modularization of XHTML ([XHTMLMOD], section 5.1) contains a set of attribute collections for ease of presentation. This specification continues this practice with the same conditions as in [XHTMLMOD], that the collections are informative and their contents normative.
Collection Name | Attributes in Collection | Supported |
---|---|---|
Core | class (NMTOKENS† ) | Yes |
id (ID†) | Yes | |
title (CDATA†) | No | |
I18N | xml:lang (NMTOKEN†) | No |
Style | style (CDATA†) | Yes |
Common | Core + I18N + Style | See Collections |
Table Note:
† See [XHTMLMOD],section 4.3
Note that the title attribute of the Core collection is not applicable to the printed page since there is no place to display such supplementary information.
Note that support for the xml:lang attribute is optional, if a printer supports special processing based on the spoken language of the document, that processing shall be controlled by this attribute.
Elements | Attributes | Supported |
---|---|---|
body | Common | See Collection |
head | I18N, | See Collection |
profile (URI†) | No | |
html | I18N, | See Collection |
version (CDATA†), | Yes | |
xmlns (URI† = "http://www.w3.org/1999/xhtml") | Yes | |
title | I18N | See Collection |
Table Note:
† See [XHTMLMOD],section 4.3
If the printer implements support for meta data then it must support the profile attribute of the head element.
Elements | Attributes | Supported |
---|---|---|
abbr, acronym, address | Common | See Collection |
blockquote | Common, | See Collection |
cite (URI†) | No | |
br | Core | See Collection |
cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd, p | Common | See Collection |
pre | Common, | See Collection |
xml:space="preserve" | Yes | |
q | Common, | See Collection |
cite (URI†) | No | |
samp, span, strong, var | Common | See Collection |
Table Note:
† See [XHTMLMOD],section 4.3
The CSS white-space property is preferred over the xml:space attribute, since the attribute is an internal mechanism between the XML processor and the formatting application and doesn't directly control the formatting of the output.
Element | Attributes | Supported |
---|---|---|
a | Common, | See Collection |
accesskey (Character†), | No | |
charset (Charset†), | No | |
href (URI†), | No | |
hreflang (LanguageCode†), | No | |
rel (LinkTypes†), | No | |
rev (LinkTypes†), | No | |
tabindex (Number†), | No | |
type (ContentType†) | No |
Table Note:
† See [XHTMLMOD],section 4.3
Elements | Attributes | Supported |
---|---|---|
dl, dt, dd, ol, ul, li | Common | See Collection |
Elements | Attributes | Supported |
---|---|---|
b, big, hr, i, small, sub, sup, tt | Common | See Collection |
Table Note:
† See [XHTMLMOD],section 4.3
Elements | Attributes | Supported | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
form | Common, | See Collection | |||||||||||||||||
action* (URI†), | No | ||||||||||||||||||
method ("get"** | "post"), | No | ||||||||||||||||||
enctype (ContentType†) | No | ||||||||||||||||||
input | Common, | See Collection | |||||||||||||||||
accesskey (Character†), | No | ||||||||||||||||||
checked ("checked"), | Yes | ||||||||||||||||||
maxlength (Number†), | No | ||||||||||||||||||
name (CDATA†), | No | ||||||||||||||||||
size (Number†), | Yes | ||||||||||||||||||
src (URI†), | No | ||||||||||||||||||
tabindex (Number†), | No | ||||||||||||||||||
|
|||||||||||||||||||
value (CDATA†) | Yes | ||||||||||||||||||
label | Common, | See Collection | |||||||||||||||||
accesskey (Character†), | No | ||||||||||||||||||
for (IDREF†) | No | ||||||||||||||||||
select | Common, | See Collection | |||||||||||||||||
multiple ("multiple"), | No | ||||||||||||||||||
name (CDATA†), | No | ||||||||||||||||||
size (Number†), | Yes | ||||||||||||||||||
tabindex (Number†) | No | ||||||||||||||||||
option | Common, | See Collection | |||||||||||||||||
selected ("selected"), | Yes | ||||||||||||||||||
value (CDATA†) | Yes | ||||||||||||||||||
textarea | Common, | See Collection | |||||||||||||||||
accesskey (Character†), | No | ||||||||||||||||||
cols* (Number†), | Yes | ||||||||||||||||||
name (CDATA†), | No | ||||||||||||||||||
rows* (Number†), | Yes | ||||||||||||||||||
tabindex (Number†) | No |
Table Notes:
† See [XHTMLMOD],section 4.3
* The attribute must be present.
** The value is the default.
Elements | Attributes | Supported |
---|---|---|
caption | Common | See Collection |
table | Common, | See Collection |
summary ( Text† ) | No | |
td | Common, | See Collection |
abbr (Text†), | No | |
align ("left" | "center" | "right"), | Yes | |
axis (CDATA†), | No | |
colspan (Number†), | Yes | |
headers (IDREFS†), | No | |
rowspan (Number†), | Yes | |
scope ("row" | "col"), | No | |
valign ("top" | "middle" | "bottom") | Yes | |
th | Common, | See Collection |
abbr (Text†), | No | |
align ("left" | "center" | "right"), | Yes | |
axis (CDATA†), | No | |
colspan (Number†), | Yes | |
headers (IDREFS†), | No | |
rowspan (Number†), | Yes | |
scope ("row" | "col"), | No | |
valign ("top" |"middle" | "bottom") | Yes | |
tr | Common, | See Collection |
align ("left" | "center" | "right"), | Yes | |
valign ("top" | "middle" | "bottom") | Yes |
Table Note:
† See [XHTMLMOD],section 4.3
If a printer implements a feature to truncate the contents of a cell because of space constraints, it must support the abbr attribute so that it may print the value of the abbr attribute (if present) instead of the cell's content.
Vertical alignment is undefined across page boundaries.
Elements | Attributes | Supported |
---|---|---|
img | Common, | See Collection |
alt* (Text†), | Yes | |
height (Length†), | Yes | |
longdesc (URI†), | No | |
src* (URI†), | Yes | |
width (Length†) | Yes |
Table Notes:
† See [XHTMLMOD],section 4.3
* The attribute must be present.
Elements | Attributes | Supported |
---|---|---|
object | Common, | See Collections |
archive (URIs†), | No | |
classid (URI†), | No | |
codebase (URI†), | Yes | |
codetype (ContentType†), | No | |
data (URI†), | Yes | |
declare ("declare"), | No | |
height (Length†), | Yes | |
name (CDATA†), | No | |
standby (Text†), | No | |
tabindex (Number†), | No | |
type ("image/jpeg"), | Yes | |
width (Length†) | Yes | |
param | id (ID†), | No |
name* (CDATA†), | No | |
type (ContentType†), | No | |
value (CDATA†), | No | |
valuetype ("data"** | "ref" | "object") | No |
Table Notes:
† See [XHTMLMOD],section 4.3
* The attribute must be present.
** The value is the default.
If the printer implements object storage then the declare attribute of the object element must be supported.
The param element's purpose is to pass data to an application specified in the enclosing object element. Since only images, which don't need initialization, are supported in the object element, this element can be completely ignored.
Elements | Attributes | Supported |
---|---|---|
meta | I18N, | See Collection |
content* (CDATA†), | No | |
http-equiv (NMTOKEN†), | No | |
name (NMTOKEN†), | No | |
scheme (CDATA†) | No |
Table Notes:
† See [XHTMLMOD],section 4.3
* The attribute must be present.
If the printer implements support for features of this element, the http-equiv attribute must be supported.
Elements | Attributes | Supported |
---|---|---|
style | I18N, | See Collection |
media (MediaDesc†), | Yes | |
title (Text†), | No | |
type* ("type/css"), | Yes | |
xml:space="preserve" | Yes |
Table Notes:
† See [XHTMLMOD],section 4.3
* The attribute must be present.
The CSS white-space property is preferred over the xml:space attribute.
This module adds the style attribute to the Common attribute collection (section 3.1).
Elements | Attributes | Supported |
---|---|---|
link | Common, | See Collection |
charset (Charset†), | Yes | |
href (URI†), | Yes | |
hreflang (LanguageCode†), | No | |
media (MediaDesc†), | Yes | |
rel ("stylesheet"), | Yes | |
rev (LinkTypes†), | No | |
type ("text/css") | Yes |
Table Note:
† See [XHTMLMOD],section 4.3
If the printer implements language selection then the hreflang attribute must be supported.
Elements | Attributes | Supported |
---|---|---|
base | href* (URI†) | Yes |
Table Notes:
† See [XHTMLMOD],section 4.3
* The attribute must be present.
XHTML-Print inherits all the structure, encoding and other basic infrastructure specified by XHTML1.0 [XHTML1]. The following sections describe and clarify the application and usage restrictions of XHTML-Print.
Because many printers create the page in a serial manner from top to bottom,
it is important for the printer to know the size of images before retrieving the
image data itself. This information is then used to create portions of the page
layout.
Therefore, the sender should
include the height and width
attributes within the img
or the object
element.
Printers may omit from the page images that do not include height and width attributes (see
item 2, Images, of section 2.3.1
).
These attributes may be expressed as pixels or percentages within the img
or
the object
element.
Percentages are relative to the parent element
and not the page width or printable area.
This document specifies only one mandatory image format: baseline JPEG as defined in [JPEG]. See Appendix A for a description of JPEG decoder requirements. Printers are not required to support:
within the JFIF and EXIF files.
Conforming XHTML-Print printers shall support both in-line and referenced
style sheets within the style
element or link
element
in the head
element of a document. Conforming XHTML-Print printers
shall also support the style attribute (i.e. in-line style) when used within
other elements as defined by XHTML 1.1[XHTML1.1].
Normal cascading rules apply.
In traditional web-based applications of XHTML, image data is contained in a separate file on a web server that the user agent retrieves.
However, there are circumstances where it is desirable to include the image
data along with the rest of the print data. Some low cost, resource constrained
clients may want to include images in their print output but cannot afford to
include a server. Some print applications may require that all the print data
can be encapsulated in a single file for transportability, avoiding firewall
issues, etc.
See Appendix B for discussion of the method that shall be used to collect both XHTML-Print and associated image data into a single file or data stream.
Low-cost printers today often have very little memory into which page data can be stored before being printed. As such, they may build and print the page in swaths on the fly from the top of the page to the bottom. To enable the use of XHTML-Print in these low cost printers, some restrictions on the order of images contained in the XHTML-Print data stream must be added.
<img src="http://10.10.10.2/images/logo.jpg">
or <object data="http://10.10.10.2/images/logo.jpg">
)
rather than included inline. (See Appendix
B). This allows the printer to get chunks of the image, as it needs it, as
it prints down the page. An HTML form is a dynamic entity when the document is displayed in a browser : data can be entered into text fields, buttons may be pushed, selections made, and options checked. None of this dynamic activity can be rendered on a printed page. However, a printed page can permanently record a particular state of the form. For example, users may wish to print forms that record products ordered or payments made.
The following discussion illustrates the activity involved when interacting with and printing forms. Please refer to Sequence Diagram 1
Sequence Diagram 1. Forms Usage
Here is an example presentation of the above form as the user would see it:
This section is informative.
This specification was prepared by the PWG XHTML-Print Working Group.
Members:
• Peter Zehler, Xerox | • Fumio Nagasaka, Epson | • Geoff Soord, Software 2000 |
• Hitoshi Sekine, Ricoh | • Jerry Thrasher, Lexmark | • Atsushi Uchine, Epson |
• Shunsaku Miyazawa, Epson | • Cameron Brodeur, Ricoh | • David Hall, HP |
• Bob Taylor, HP | • Junichi Ota. Ricoh | • Rod Acosta, Agfa Monotype |
• Lee Farrell, Canon | • Alain Regnier, Ricoh | • Yiruo Yang, Epson |
• Athar Ahmad Minolta-QMS | • Mabry Dozier, Minolta | • Craig Whittle, Sharp |
• Gail Songer, Peerless | • Ted Tronson, Novell | • Alan Berkema, HP |
• Harry Lewis, IBM | • Bill Wagner | • Elliott Bradshaw, Oak Tech. |
Special thanks to Allison Nuxoll of Hewlett-Packard for her helpful comments, and Elliott Bradshaw for his many reviews this document.
This appendix describes recommended behaviors for JPEG decoders in XHTML-Print devices. Behaviors for both minimal printers and enhanced layout printers are described. Many of the behaviors described in this document follow directly from language already present in the relevant JPEG standards, but are repeated here to emphasize their importance.
The decoder behaviors described in this document are intended to minimize implementation complexity, while retaining maximum compatibility with existing JPEG files. In particular, these recommendations seek to ensure compatibility with both EXIF and baseline JFIF (i.e. the subset of JFIF files that use only baseline JPEG processes). Support for JPEG streams using non-baseline processes, such as arithmetic coding or progressive coding, is not mandated for XHTML-Print compliance.
This section describes behaviors of JPEG decoders for minimal XHTML-Print implementations.
A JPEG decoder for an XHTML-Print printer shall support all baseline JPEG processes as defined in [CCITT], except for 2- and 4-component images. These processes include grayscale and 3-component images, 8-bit/component sample depth, Huffman entropy coding, 444, 422, 411, and 400 subsampling modes, and sequential (i.e. non-progressive) scan.
Baseline decoders may ignore application-specific markers, such as the JFIF APP0 marker and the EXIF APP1/APP2 markers. This will cause all images to print in an un-rotated orientation, with image size as specified in the JPEG SOF marker if not overridden by XHTML-Print mark-up. A JPEG decoder for a minimal printer shall not fail as a consequence of encountering an unsupported APPx marker (i.e. all such markers shall be correctly parsed, even if they are ignored).
This section describes a recommended color management approach for minimal XHTML-Print printers.
Sample values in a grayscale (single-component) JPEG image shall be converted to the sRGB color space by setting
Rout= Gout = Bout = Grayin
Sample values in 3-component JPEG images shall be interpreted as YCbCr samples, as would be obtained by applying the matrices described in ITU BT.601 [BT601.5] to sRGB input data.
This section describes behaviors of JPEG decoders for XHTML-Print devices that support the XHTML-Print Enhanced Layout Extension, an optional feature block. The behaviors described below should be interpreted as "in addition to" those described in XHTML-Print Document Type and Printer Conformance (the requirements for minimal XHTML-Print devices).
A JPEG decoder for an XHTML-Print implementation which supports the Enhanced Layout Extension may decode the TIFF IFDs embedded in the EXIF APP1 and APP2 markers, as described in Section 2.6.4 of [JEIDA]. The following IFDs may be supported. However, any future XHTML elements or CSS properties affecting image orientation shall take precedence over these IFDs.
Tag Name | Field Name | Description |
Orientation of Image | Orientation | Sets image orientation in 90-degree increments, and enables transposition. |
The intent of this appendix is to describe the method for including XHTML-Print and associated image data in a single data stream or file. Support for Inline Image Data is conditionally mandatory; i.e. any device supporting Inline Image Data shall support this method. (See Image Data.) Mandating support for Inline Image Data is outside the scope of this document.
In addition to images, if separate style sheets are to be interleaved with the XHTML-Print data, the same method shall be used.
This section includes by reference the entirety of "The MIME Application/Multiplexed Content-type", Robert Herriot [MIMEMPX]. For all printers that support inline data, [MIMEMPX] shall be supported.
Producers and consumers of Application/Vnd.pwg-multiplexed entities, as defined in [MIMEMPX], should consider each component image message of the compound document as having one and only one reference. The producer of the compound document must assume that the consumer of the Application/Vnd.pwg-multiplexed entity has limited memory and therefore include a unique image message for each image reference found in the root document. If a ContentID is present in the header of an image message, that ContentID must be unique. If a Content-Location is present in the header of an image message, that Content-Location is required to be unique except for the special case where a repeated reference to the same image URL causes several messages containing the same image data to be present in the compound document. Consumers may release the message data associated with an image reference as the image is rendered, because the Consumer can be confident that another reference to the same image will be accompanied by another message containing the image data. Consumers may also substitute image data for a message with a given Content-Location header value with image data from other messages with the same Content-Location header value because Consumers can be confident that messages with identical Content-Location values do in fact contain identical data.
URL references in the the root document of the multiplexed document must be matched to Content-Location and/or Content-ID fields of the referenced message object according to the rules given by [RFC2557]. An exception to the rules given by [RFC2557] occurs when a reference is made to a message object named with a Content-Location. In that special case, multiple instances of that message are required in the compound document.
This section is informative.
An alternative method to include inline image data in XHTML-Print is via the
object
element and a forward reference. The declare
attribute of the object
element is used to define the object, but
delay its processing. The id attribute is used to associate the forward
reference with the image content, sent at the end of the XHTML-Print document.
Because this method normally encodes the binary image data using base64
encoding, a significant increase in the size of the data transmitted will be
experienced. This should be avoided over low speed connections. Printers
supporting inline data may support base64 encoding using
object
.
See RFC2397 for information on the "data" URL scheme.
This method may be useful for very simple clients that cannot afford a server for image download or for some reason cannot utilize the Application/Multiplexed MIME type; however, it is not recommended for general use especially if the size of the printer's buffer is unknown.
This appendix is normative.
This section contains the pieces of the XHTML-Print DTD that are unique to XHTML-Print. The remaining entities and modules are as specified in reference [XHTMLMOD].
The following should be used from Modularization of XHTML [XHTMLMOD]:
<!-- ....................................................................... --> <!-- XHTML-Print 1.0 DTD ................................................... --> <!-- file: xhtml-print10.dtd --> <!-- XHTML-Print 1.0 DTD This is XHTML-Print 1.0, a variant of XHTML Basic for printing. Copyright 2001-2003 Printer Working Group, All Rights Reserved. Permission to use, copy, modify and distribute the XHTML-Print DTD and its accompanying documentation for any purpose and without fee is hereby granted in perpetuity, provided that the above copyright notice and this paragraph appear in all copies. The copyright holders make no representation about the suitability of the DTD for any purpose. It is provided "as is" without expressed or implied warranty. Author: Jun Fujisawa <fujisawa.jun@canon.co.jp> Revision: $Id: xhtml-print10.dtd,v 1.5 2003/02/09 06:59:04 fujisawa Exp $ --> <!-- This is the driver file for version 1.0 of the XHTML-Print DTD. This DTD is identified by the PUBLIC and SYSTEM identifiers: PUBLIC "-//PWG//DTD XHTML-Print 1.0//EN" SYSTEM "http://www.xhtml-print.org/xhtml-print/xhtml-print10.dtd" --> <!ENTITY % XHTML.version "-//PWG//DTD XHTML-Print 1.0//EN" > <!-- Use this URI to identify the default namespace: "http://www.w3.org/1999/xhtml" --> <!ENTITY % NS.prefixed "IGNORE" > <!ENTITY % XHTML.prefix "" > <!-- Reserved for use with the XLink namespace: --> <!ENTITY % XLINK.xmlns "" > <!ENTITY % XLINK.xmlns.attrib "" > <!-- reserved for future use with document profiles --> <!ENTITY % XHTML.profile "" > <!-- Bidirectional Text features This feature-test entity is used to declare elements and attributes used for bidirectional text support. --> <!ENTITY % XHTML.bidi "IGNORE" > <!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> <!ENTITY % xhtml-events.module "IGNORE" > <!ENTITY % xhtml-bdo.module "%XHTML.bidi;" > <!-- Style Attribute Module ............................ --> <!ENTITY % xhtml-inlstyle.module "INCLUDE" > <![%xhtml-inlstyle.module;[ <!ENTITY % xhtml-inlstyle.mod PUBLIC "-//W3C//ENTITIES XHTML Inline Style 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod" > %xhtml-inlstyle.mod;]]> <!-- Document Model Module ............................. --> <!ENTITY % xhtml-model.mod PUBLIC "-//PWG//ENTITIES XHTML-Print 1.0 Document Model 1.0//EN" "http://www.pwg.org/xhtml-print/xhtml-print10-model-1.mod" > <!-- Modular Framework Module (required) ............... --> <!ENTITY % xhtml-framework.mod PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod" > %xhtml-framework.mod; <!-- Text Module (required) ............................ --> <!ENTITY % xhtml-text.mod PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod" > %xhtml-text.mod; <!-- Hypertext Module (required) ....................... --> <!ENTITY % xhtml-hypertext.mod PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod" > %xhtml-hypertext.mod; <!-- Lists Module (required) ........................... --> <!ENTITY % xhtml-list.mod PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod" > %xhtml-list.mod; <!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> <!-- Presentation Module ............................... --> <!ENTITY % xhtml-pres.module "INCLUDE" > <![%xhtml-pres.module;[ <!ENTITY % xhtml-pres.mod PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod" > %xhtml-pres.mod;]]> <!-- Image Module ...................................... --> <!ENTITY % xhtml-image.module "INCLUDE" > <![%xhtml-image.module;[ <!ENTITY % xhtml-image.mod PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-image-1.mod" > %xhtml-image.mod;]]> <!-- Tables Module ..................................... --> <!ENTITY % xhtml-table.module "INCLUDE" > <![%xhtml-table.module;[ <!ENTITY % xhtml-table.mod PUBLIC "-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-basic-table-1.mod" > %xhtml-table.mod;]]> <!-- Forms Module ...................................... --> <!ENTITY % xhtml-form.module "INCLUDE" > <![%xhtml-form.module;[ <!ENTITY % xhtml-form.mod PUBLIC "-//W3C//ELEMENTS XHTML Basic Forms 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-basic-form-1.mod" > %xhtml-form.mod;]]> <!-- Style Sheet Module ................................ --> <!ENTITY % xhtml-style.module "INCLUDE" > <![%xhtml-style.module;[ <!ENTITY % xhtml-style.mod PUBLIC "-//W3C//ELEMENTS XHTML Style Sheets 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod" > %xhtml-style.mod;]]> <!-- Link Module ....................................... --> <!ENTITY % xhtml-link.module "INCLUDE" > <![%xhtml-link.module;[ <!ENTITY % xhtml-link.mod PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-link-1.mod" > %xhtml-link.mod;]]> <!-- Metainformation Module ............................ --> <!ENTITY % xhtml-meta.module "INCLUDE" > <![%xhtml-meta.module;[ <!ENTITY % xhtml-meta.mod PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod" > %xhtml-meta.mod;]]> <!-- Base Module ....................................... --> <!ENTITY % xhtml-base.module "INCLUDE" > <![%xhtml-base.module;[ <!ENTITY % xhtml-base.mod PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-base-1.mod" > %xhtml-base.mod;]]> <!-- Param Module ...................................... --> <!ENTITY % xhtml-param.module "INCLUDE" > <![%xhtml-param.module;[ <!ENTITY % xhtml-param.mod PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod" > %xhtml-param.mod;]]> <!-- Object Module ..................................... --> <!ENTITY % xhtml-object.module "INCLUDE" > <![%xhtml-object.module;[ <!ENTITY % xhtml-object.mod PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod" > %xhtml-object.mod;]]> <!-- Structure Module (required) ....................... --> <!ENTITY % xhtml-struct.mod PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod" > %xhtml-struct.mod; <!-- end of XHTML-Print 1.0 DTD ............................................ --> <!-- ....................................................................... -->
<!-- ....................................................................... --> <!-- XHTML-Print 1.0 Document Model Module ................................. --> <!-- file: xhtml-print10-model-1.mod This is XHTML-Print 1.0, a variant of XHTML Basic for printing. Copyright 2001-2003 Printer Working Group, All Rights Reserved. Revision: $Id: xhtml-print10-model-1.mod,v 1.5 2003/02/09 06:59:04 fujisawa Exp $ This DTD module is identified by the PUBLIC and SYSTEM identifiers: PUBLIC "-//PWG//ENTITIES XHTML-Print 1.0 Document Model 1.0//EN" SYSTEM "http://www.xhtml-print.org/xhtml-print/xhtml-print10-model-1.mod" ....................................................................... --> <!-- XHTML-Print 1.0 Document Model This module describes the groupings of elements that make up common content models for XHTML-Print elements. --> <!-- Optional Elements in head ......................... --> <!ENTITY % HeadOpts.mix "( %meta.qname; | %link.qname; | %object.qname; | %style.qname; )*" > <!-- Miscellaneous Elements ............................ --> <!ENTITY % Misc.class "" > <!-- Inline Elements ................................... --> <!ENTITY % InlStruct.class "%br.qname; | %span.qname;" > <!ENTITY % InlPhras.class "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname; | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname; | %abbr.qname; | %acronym.qname; | %q.qname;" > <!ENTITY % InlPres.class "| %tt.qname; | %i.qname; | %b.qname; | %big.qname; | %small.qname; | %sub.qname; | %sup.qname; " > <!ENTITY % I18n.class "" > <!ENTITY % Anchor.class "| %a.qname;" > <!ENTITY % InlSpecial.class "| %img.qname; | %object.qname;" > <!ENTITY % InlForm.class "| %input.qname; | %select.qname; | %textarea.qname; | %label.qname;" > <!ENTITY % Inline.extra "" > <!ENTITY % Inline.class "%InlStruct.class; %InlPhras.class; %InlPres.class; %Anchor.class; %InlSpecial.class; %InlForm.class; %Inline.extra;" > <!ENTITY % InlNoAnchor.class "%InlStruct.class; %InlPhras.class; %InlPres.class; %InlSpecial.class; %InlForm.class; %Inline.extra;" > <!ENTITY % InlNoAnchor.mix "%InlNoAnchor.class; %Misc.class;" > <!ENTITY % Inline.mix "%Inline.class; %Misc.class;" > <!-- Block Elements .................................... --> <!ENTITY % Heading.class "%h1.qname; | %h2.qname; | %h3.qname; | %h4.qname; | %h5.qname; | %h6.qname;" > <!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname;" > <!ENTITY % Table.class "| %table.qname;" > <!ENTITY % Form.class "| %form.qname;" > <!ENTITY % BlkStruct.class "%p.qname; | %div.qname;" > <!ENTITY % BlkPhras.class "| %pre.qname; | %blockquote.qname; | %address.qname;" > <!ENTITY % BlkPres.class "| %hr.qname;" > <!ENTITY % BlkSpecial.class "%Table.class; %Form.class;" > <!ENTITY % Block.extra "" > <!ENTITY % Block.class "%BlkStruct.class; %BlkPhras.class; %BlkPres.class; %BlkSpecial.class; %Block.extra;" > <!ENTITY % Block.mix "%Heading.class; | %List.class; | %Block.class; %Misc.class;" > <!-- All Content Elements .............................. --> <!ENTITY % FlowNoTable.mix "%Heading.class; | %List.class; | %BlkStruct.class; %BlkPhras.class; %BlkPres.class; %Form.class; %Block.extra; | %Inline.class; %Misc.class;" > <!ENTITY % Flow.mix "%Heading.class; | %List.class; | %Block.class; | %Inline.class; %Misc.class;" > <!-- end of xhtml-print10-model-1.mod -->