Типичное приложение, используя API Службы печати Java выполняет эти шаги, чтобы обработать запрос печати:
Получите подходящий DocFlavor, который является классом, который определяет формат данных печати.
Создайте и заполните AttributeSet, который инкапсулирует ряд атрибутов, которые описывают требуемые возможности службы печати, такие как возможность напечатать пять копий, сшитых, и двусторонний.
Поиск служба печати, которая может обработать запрос печати как определено DocFlavor и набором атрибута.
Создайте задание печати из службы печати.
Вызовите метод печати задания печати.
Приложение выполняет эти шаги по-другому в зависимости от того, что и как оно намеревается напечатать. Приложение может или отправить данные печати принтеру или потоку вывода. Данные печати могут или быть документом в форме текста или изображений, или Jav объект, инкапсулирующий 2-D Графику. Если данные печати являются 2-D графикой, задание печати может быть представлено или DocPrintJob или PrinterJob. Если данные печати являются документом тогда, DocPrintJob должен использоваться.
Комбинации печати методов и форматов данных печати приводят к выбору шести механизмов печати:
Напечатайте документ принтеру при использовании DocPrintJob и реализации PrintService
Передайте документ потоком потоку вывода при использовании DocPrintJob и StreamPrintService
Напечатайте 2-D графику к принтеру при использовании DocPrintJob и реализации PrintService
Поток 2-D графика к потоку вывода при использовании DocPrintJob и StreamPrintService
Напечатайте 2-D графику к PrintService, используя java.awt.print. PrinterJob
Поток 2-D графика к StreamPrintService, используя java.awt.print. PrinterJob
Большинство приложений, используя API Службы печати Java, вероятно, отправит документ непосредственно принтеру, который демонстрирует следующий пример кода:
// 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) {}
}
Хотя эта выборка только демонстрирует один из этих шести способов напечатать, другая работа механизмов печати похожим способом. Остальная часть этого руководства обсуждает каждую часть процесса печати и всех механизмов печати более подробно