SimpleDoc
public interface Doc
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 | Description |
---|---|---|
DocAttributeSet |
getAttributes() |
Obtains the set of printing attributes for this doc object. |
DocFlavor |
getDocFlavor() |
Determines the doc flavor in which this doc object will supply its piece of print data. |
Object |
getPrintData() |
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. |
Reader |
getReaderForText() |
Obtains a reader for extracting character print data from this doc. |
InputStream |
getStreamForBytes() |
Obtains an input stream for extracting byte print data from this doc. |
DocFlavor getDocFlavor()
Object getPrintData() throws IOException
getPrintData()
method returns an instance of the representation class whose name is given bygetDocFlavor()
.getRepresentationClassName()
, and the return value can be cast from class Object
to that representation class.IOException
- if the representation class is a stream and there was an I/O error while constructing the streamDocAttributeSet getAttributes()
null
is returned, the printer must consult the job's attribute set to obtain the value for attribute X, and if not found there, the printer must use an implementation-dependent default value. The returned attribute set is unmodifiable.null
to obtain all attribute values from the job's attribute setReader getReaderForText() throws IOException
Doc
implementation is required to support this method if the DocFlavor
has one of the following print data representation classes, and return null
otherwise: 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.null
is returned.IOException
- if there was an I/O error while creating the readerInputStream getStreamForBytes() throws IOException
Doc
implementation is required to support this method if the DocFlavor
has one of the following print data representation classes, and return null
otherwise: null
is returned.IOException
- if there was an I/O error while creating the input stream
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/print/Doc.html