CONTENTS | PREV | NEXT
CHAPTER
3
Specifying Document Types
From the user's perspective, a
document can take many different forms, including: a PDF file, an
image from a digital camera, an email, a word processor document,
or a web page. Before printing a document of a particular format,
the client needs to ensure that the printer can understand the
format. Sometimes a printer can directly print documents of a given
format: photo printers can directly print images of various
formats, and PostScript printers can directly print a
PostScript document. However, there are few printers that
can directly print a wide range of formats; most printers require
some higher-level software support to translate the source document
into a format they can print.
A printing API needs
to provide a way to describe document types so that:
- The printer can
report what formats it can print.
- The client can
describe the format of the data it wants to print.
- The client can
describe the encoding of text data.
The Java Print
Service API describes document types using the DocFlavor class. A
DocFlavor is comprised of:
- A MIME type that
tells the printer how to interpret the data.
- A representation
class name indicating the Java class that describes how the data is
sent to the printer.
To describe an HTML
page to a print service, a client might choose to use a DocFlavor
with a MIME type string of "text/html; charset=utf-16" and
a representation class name of "java.io.InputStream". The
client can obtain this DocFlavor in one of two ways:
- Construct a
DocFlavor:DocFlavor htmlStreamFlavor = new DocFlavor("text/html;
charset=utf-16", "java.io.InputStream");
- Use the pre-defined
instance that represents this type of
DocFlavor:DocFlavor.INPUT_STREAM TEXT_HTML_UTF_16 . The Java Print
Service API provides a set of pre-defined instances for common doc
flavors as a convenience.
Because the HTML page
contains text data, the MIME type String includes the text
encoding, which is charset=utf-16 in this example. The client is
responsible for accurately describing the print data to the print
service. The section, Client-Formatted Print
Data, explains how to properly construct a DocFlavor to
accomplish this. If the text encoding is not included in the MIME
type, unexpected results can occur, as explained in the section,
Importance of Character
Encoding. The client can allow the service to determine
the format of data that the client supplies as a Java object. The
Service-Formatted Print
Data section describes using a DocFlavor to represent
service-formatted print data.
Keep in mand that, just because the DocFlavor API has a
pre-declared doc flavor, this doesn't mean that an implementation
of the particular flavor is available. For example, even if you use
the pre-defined DocFlavor representing HTML text in
UTF-16, you won't be able to print the HTML unless you have a print
service that supports printing HTML. Again, it is the user's
responsibility to ensure that a printer supports a particular
format.
CONTENTS | PREV | NEXT