Doc specifies the interface for an object that supplies one
piece of print data for a Print Job. "Doc" is a short, easy-to-pronounce term
that means "a piece of print data." The client passes to the Print Job an
object that implements interface Doc, and the Print Job calls methods
on that object to obtain the print data. The Doc interface lets a
Print Job:
DocFlavor), in which the print data is available. A doc
flavor designates the print data format (a MIME type) and the
representation class of the object from which the print data comes.
javax.print.attribute . The doc returns its printing attributes
stored in an javax.print.attribute.DocAttributeSet .
Doc is permitted always
to return the same object each time the method is called. This has
implications for a Print Job or other caller of a doc object whose print data
representation object "consumes" the print data as the caller obtains the
print data, such as a print data representation object which is a stream.
Once the Print Job has called getPrintData() and
obtained the stream, any further calls to getPrintData() will return the same stream object upon which reading may
already be in progress, not a new stream object that will re-read the
print data from the beginning. Specifying a doc object to behave this way
simplifies the implementation of doc objects, and is justified on the grounds
that a particular doc is intended to convey print data only to one Print Job,
not to several different Print Jobs. (To convey the same print data to
several different Print Jobs, you have to create several different doc
objects on top of the same print data source.)
Interface Doc affords considerable implementation flexibility. The
print data might already be in existence when the doc object is constructed.
In this case the objects returned by the doc's methods can be supplied to the
doc's constructor, be stored in the doc ahead of time, and simply be returned
when called for. Alternatively, the print data might not exist yet when the
doc object is constructed. In this case the doc object might provide a "lazy"
implementation that generates the print data representation object (and/or
the print data) only when the Print Job calls for it (when the Print Job
calls the getPrintData() method).
There is no restriction on the number of client threads that may be
simultaneously accessing the same doc. Therefore, all implementations of
interface Doc must be designed to be multiple thread safe.
However there can only be one consumer of the print data obtained from a
Doc.
If print data is obtained from the client as a stream, by calling
Doc's getReaderForText() or getStreamForBytes()
methods, or because the print data source is already an InputStream
or Reader, then the print service should always close these streams
for the client on all job completion conditions. With the following caveat.
If the print data is itself a stream, the service will always close it. If
the print data is otherwise something that can be requested as a stream, the
service will only close the stream if it has obtained the stream before
terminating. That is, just because a print service might request data as a
stream does not mean that it will, with the implications that Doc
implementors which rely on the service to close them should create such
streams only in response to a request from the service.
| Modifier and Type | Method and Description |
|---|---|
| public DocAttributeSet | Returns: unmodifiable set of printing attributes for this doc, ornull to obtain all attribute values from the job's
attribute setObtains the set of printing attributes for this doc object. |
| public DocFlavor | Returns: doc flavorDetermines the doc flavor in which this doc object will supply its piece of print data. |
| public Object | Returns: print data representation objectObtains the print data representation object that contains this doc object's piece of print data in the format corresponding to the supported doc flavor. |
| public Reader | Returns: reader for reading the print data characters from this doc. If a reader cannot be provided because this doc does not meet the criteria stated above,null is returned.Obtains a reader for extracting character print data from this doc. |
| public InputStream | Returns: input stream for reading the print data bytes from this doc. If an input stream cannot be provided because this doc does not meet the criteria stated above,null is returned.Obtains an input stream for extracting byte print data from this doc. |
| getAttributes | back to summary |
|---|---|
| public DocAttributeSet getAttributes() Obtains the set of printing attributes for this doc object. If the
returned attribute set includes an instance of a particular attribute
X, the printer must use that attribute value for this doc,
overriding any value of attribute X in the job's attribute set. If
the returned attribute set does not include an instance of a particular
attribute X or if
| |
| getDocFlavor | back to summary |
|---|---|
| public DocFlavor getDocFlavor() Determines the doc flavor in which this doc object will supply its piece of print data.
| |
| getPrintData | back to summary |
|---|---|
| public Object getPrintData() throws IOException Obtains the print data representation object that contains this doc
object's piece of print data in the format corresponding to the supported
doc flavor. The
| |
| getReaderForText | back to summary |
|---|---|
| public Reader getReaderForText() throws IOException Obtains a reader for extracting character print data from this doc. The
Reader for reading the print data as a stream of
characters from the print data representation object. However, if the
print data representation object is itself a Reader, then the
print data representation object is simply returned.
| |
| getStreamForBytes | back to summary |
|---|---|
| public InputStream getStreamForBytes() throws IOException Obtains an input stream for extracting byte print data from this doc. The
| |