CONTENTS | PREV | NEXT
A typical application
using the Java Print Service API performs these steps to process a
print request:
- Obtain a suitable DocFlavor, which is a class that defines the
format of the print data.
- Create and populate an AttributeSet, which encapsulates a set
of attributes that describe the desired print service capabilities,
such as the ability to print five copies, stapled, and
double-sided.
- Lookup a print service that can handle the print request as
specified by the DocFlavor and the attribute set.
- Create a print job from the print service.
- Call the print job's print method.
The application performs these steps differently depending on what
and how it intends to print. The application can either send print
data to a printer or to an output stream. The print data can either
be a document in the form of text or images, or a Jav a object
encapsulating 2D Graphics. If the print data is 2D graphics , the
print job can be represented by either a DocPrintJob or a
PrinterJob. If the print data is a document then a DocPrintJob must
be used.
The combinations of
printing methods and print data formats yield a choice of six
printing mechanisms:
- Print a document to
a printer by using a DocPrintJob and an implementation of
PrintService
- Stream a document
to an output stream by using a DocPrintJob and a
StreamPrintService
- Print 2D graphics
to a printer by using a DocPrintJob and an implementation of
PrintService
- Stream 2D graphics
to an output stream by using a DocPrintJob and a
StreamPrintService
- Print 2D graphics
to a PrintService using java.awt.print.PrinterJob
- Stream 2D graphics
to a StreamPrintService using java.awt.print.PrinterJob
The Attributes chapter
and the Specifying Document Types chapter describe how to create an
attribute set and specify document types for use with any of the
print mechanisms. The Printing and Streaming Documents chapter discusses printing and streaming
documents using DocPrintJob. The Printing and Streaming 2D
Graphics chapter explains printing and streaming 2D
graphics using both DocPrintJob and PrinterJob.
A Basic
Example
Most applications using
the Java Print Service API will probably send a document directly
to a printer, which the following code sample demonstrates:
// Input the file
FileInputStream textStream;
try {
textstream = new FileInputStream("file.TXT");
} catch (FileNotFoundException ffne) {
}
if (textstream == null) {
return;
}
// Set the document type
DocFlavor myFormat = DocFlavor.INPUT_STREAM.TEXT_PLAIN_ASCII;
// Create a Doc
Doc myDoc = new SimpleDoc(texttream, myFormat, null);
// Build a set of attributes
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(5));
aset.add(MediaSize.ISO_A4);
aset.add(Sides.DUPLEX);
// discover the printers that can print the format according to the
// instructions in the attribute set
PrintService[] services =
PrintServiceLookup.lookupPrintServices(myFormat, aset);
// Create a print job from one of the print services
if (services.length > 0) {
DocPrintJob job = services[0].createPrintJob();
try {
job.print(myDoc, aset);
} catch (PrintException pe) {}
}
Although this sample
only demonstrates one of the six ways to print, the other printing
mechanisms work in a similar way. The rest of this guide discusses
each piece of the printing process and all the printing mechanisms
in more detail
CONTENTS | PREV | NEXT