Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации
СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT

Используя PrinterJob, чтобы Напечатать или Передать Графику потоком

Новый API injava.awt.print состоит из этих новых методов PrinterJob: Поскольку новый printDialog и pageDialog методы берут набор атрибута, пользователи могут отредактировать настройки атрибута initail от диалоговых окон.

Приложения могут использовать PrinterJob, чтобы напечатать 2-D графику к принтеру или к потоку вывода. lookupPrintServices метод возвращает массив объектов PrintService, каждый из которых представляет принтер, который может напечатать 2-D графику. lookupStreamPrintServices метод возвращает массив объектов StreamPrintServiceFactory, каждый из которых может возвратить StreamPrintService. Приложение использует StreamPrintService, чтобы отправить данные печати потоку вывода. Как с печатью документов, приложения могут использовать StreamPrintService, чтобы транскодировать 2-D графику к другим форматам. Этот раздел обсуждает использование PrinterJob, чтобы представить 2-D графику принтеру и потоку вывода.


Печать 2-D Графики

Новый pageDialog, printDialog, и методы печати позволяют приложению инициализировать настройки печати и передавать эти настройки к диалоговому окну так, чтобы пользователь мог обновить настройки прежде, чем представить запрос печати, как демонстрирующийся этим примером кода:

// Step 1: Set up initial print settings.
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
// Step 2: Obtain a print job.
PrinterJob pj = PrinterJob.getPrinterJob();
// Step 3: Find print services.
PrintService []services = PrinterJob.lookupPrintServices();
if (services.length > 0) {
        System.out.println("selected printer: " + services[0]);
        try {
        pj.setPrintService(service[0]); 
        // Step 2: Pass the settings to a page dialog and print dialog.
        pj.pageDialog(aset);
        if (pj.printDialog(aset)) {
                // Step 4: Update the settings made by the user in the dialogs.
                // Step 5: Pass the final settings into the print request.
                pj.print(aset);
        }
        } catch (PrinterException(pe)) {
                System.err.println(pe):
        }
} 

См. Пример: Print2DPrinterJob.java для полного приложения.

Отметьте, что Шаг 4 в этом примере кода, кажется, не соответствует никакой определенной строке кода. Фактически, пользователь обновляет настройки печати в диалоговых окнах, и обновленные настройки сохраняются в PrintRequestAttributeSet, aset.

Одна проблема с использованием 2-D Java и Служба печати Java вместе состоит в том, что некоторые атрибуты, такие как число копий, определяются в обоих API. Если такой атрибут определяется в PrintRequestAttributeSet, он имеет приоритет по тому же самому атрибуту, определенному в PrinterJob. Отметьте, что, если пользователь обновляет число копий в диалоговом окне печати, PrinterJob автоматически обновляется, чтобы отразить это, который подтверждает существующее поведение.

Спецификация PageFormat также накладывается с Носителями Службы печати Java, MediaPrintableArea, и атрибутами OrientationRequested. Если приложение использует Печатаемый интерфейс и печать (PrintRequestAttributeSet) метод, носители, ориентация, и вызывающие мысленный образ атрибуты области, содержавшиеся в наборе атрибута, добавляются к новому PageFormat, который передают к методу печати Печатаемого объекта. Если приложение использует Листаемый интерфейс, PageFormat не изменяется.


Потоковая передача 2-D Графики

Приложение может также использовать PrinterJob и StreamPrintService, чтобы отправить данные печати потоку вывода. Этот пример подобен примеру в предыдущем разделе, кроме StreamPrintService используется вместо PrintService:

PrinterJob job = PrinterJob.getPrinterJob();
String psMimeType = "application/postscript";
FileOutputStream outstream; 
StreamPrintService psPrinter; 
StreamPrintServiceFactory []spsFactories =
        PrinterJob.lookupStreamPrintServices(psMimeType);
if (factories.length > 0) { 
        try { 
                outstream = new File("out.ps"); 
                psPrinter = factories[0].getPrintService(fos); 
                // psPrinter can now be set as the service on a PrinterJob 
        } catch (FileNotFoundException e) { } 
} 
job.setPrintService(service[0]); // if app wants to specify this printer.
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(2));
job.print(aset);
} 


СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT

Oracle и/или его филиалы Авторское право © 1993, 2012, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами