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

Стандартные Атрибуты

javax.print.attribute.standard пакет перечисляет все стандартные атрибуты в API Службы печати Java. Большинство этих стандартных атрибутов берется от атрибутов, определенных в интернет-Протоколе Печати IETF (IPP) 1.1 спецификации. Это означает, что каждый IPP-совместимый класс атрибута (категория), определенная в пакете javax.print.attribute.standard, соответствует категории атрибута IPP, и имя (как возвращено getName) является фактическим именем IPP для категории. Имена классов также обычно отражают имя IPP так близко как соглашения кодирования разрешения на язык программирования Java. Кроме того значения, определенные для категории, являются тем же самым как значениями IPP. Совместимость IPP каждой категории атрибута документируется в спецификацию API.

Этот раздел описывает атрибуты, которые разработчики будут, вероятно, использовать наиболее часто. Более обычно используемые атрибуты, включая тех перечисленных здесь, реализуют PrintRequestAttribute, потому что печать приложений будет обычно определять, как все задание печати должно быть напечатано, который является ролью PrintRequestAttribute.


OrientationRequested

Категория атрибута OrientationRequested позволяет Вам определять ориентацию обработки изображений на бумаге. Возможные значения атрибута: ПОРТРЕТ, СРЕДА, REVERSE_PORTRAIT, и REVERSE_LANDSCAPE. OrientationRequested. ПОРТРЕТ обычно является значением по умолчанию. Этот фрагмент кода демонстрирует, как добавлять, что OrientationRequested приписывает набору:

aset.add(OrientationRequested.REVERSE_PORTRAIT);
Объект OrientationRequested является безопасным с точки зрения типов перечислением, инкапсулирующим Строковые значения, которые соответствуют возможным ориентациям. Эти значения являются фактическими ключевыми словами IPP.

Некоторые предварительно отформатированные типы документов, такие как "Постскриптум", не могли бы быть в состоянии поддерживать эту категорию атрибута, потому что предварительно отформатированные типы документов встраивают команды языка принтера, которые интерпретируются принтером, и эти команды имеют приоритет по клиентскому запросу.

Клиенты могут обнаружить поддерживаемые значения ориентации для определенной службы печати, вызывая:

PrintService.getSupportedAttributeValues(OrientationRequested.class, ...).
Этот метод возвращает массив типа OrientationRequested, перечисляющий поддерживаемые значения.

Копии

Категория атрибута Копий позволяет Вам определять число копий, чтобы напечатать. Класс Копий инкапсулирует целое число, представляющее число копий, которые требуют. Этот фрагмент кода демонстрирует, как добавлять атрибут Копий, набор к пяти копиям, к набору атрибута:

aset.add(Copies(5));
Клиенты могут обнаружить диапазон копий, которые служба печати поддерживает, вызывая:

PrintService.getSupportedAttributeValues(Copies.class, ...) 
Этот метод возвращает объект CopiesSupported, который инкапсулирует диапазон целочисленных значений, представляющих диапазон копий, которые может обработать служба. Вызов getSupportedAttributeValues с CopiesSupported вместо Копий всегда возвращает нуль, потому что объект CopiesSupported не реализует интерфейс PrintRequestAttribute, и таким образом, клиент не может определить атрибут CopiesSupported в запросе печати.

Этот пример кода демонстрирует, как обнаруживать, поддерживает ли служба печати печать 5 копий и добавление атрибута Копий со значением 5 копий к набору атрибута:

CopiesSupported copSupp = 
        (CopiesSupported) service.getSupportedAttributeValues(Copies.class, null,
                                                                                null);
if (copSupp != null && copSupp.contains(5)) {
        requestAttrSet.add(new Copies(5));
} else { ...
}

Носители

Носители являются атрибутом IPP, который идентифицирует носитель, на котором можно напечатать. Атрибут Носителей является важным атрибутом, чтобы понять, butis относительно сложный.

API Службы печати Java определяет три подкласса Носителей абстрактного класса, чтобы отразить перегруженный атрибут Носителей в спецификации IPP: MediaSizeName, MediaName и MediaTray. У всех подклассов Носителей есть категория Носителей, для которой каждый подкласс определяет различные стандартные значения атрибута. Например, объект MediaTray может определить значение РУКОВОДСТВА для атрибута Носителей, чтобы указать, что документ должен быть напечатан на бумаге от ручного лотка принтера. Этот фрагмент кода демонстрирует, как добавлять, Носители приписывают набору:

aset.add(MediaTray.MANUAL);

Значением атрибута Носителей всегда является Строка, но потому что атрибут перегружается, его значение определяет тип носителей, к которым обращается атрибут. Например, IPP предопределенный набор значений атрибута включают значения "a4" и "главный лоток". Если Носители устанавливаются в значение "a4" тогда, атрибут Носителей обращается к размеру бумаги, но если Носители устанавливаются в "главный лоток" тогда, атрибут Носителей обращается к бумажному источнику. Поскольку Строковое значение атрибута может обратиться к таким разнообразным типам носителей, приложение может расширить набор атрибута, чтобы включать значения, такие как "фирменный бланк компании" или "желтая почтовая бумага". Конечно, чтобы расширить атрибут Носителей таким образом, приложение должно обнаружить службу печати, которая конфигурируется, чтобы напечатать с этим носители.

В большинстве случаев приложения будут использовать или MediaSizeName или MediaTray. Класс MediaSizeName перечисляет носители размером. Класс MediaTray перечисляет лотки для бумаги на принтере, которые обычно включают основной лоток и ручной лоток канала. IPP 1.1 спецификации не предусматривают определение и размер носителей и лоток носителей одновременно, что означает, например, что приложение не может запросить лист А4 размера от ручного лотка. Будущая версия спецификации IPP могла бы предусмотреть способ запросить больше чем один тип носителей за один раз, когда API JPS будет наиболее вероятно улучшен, чтобы реализовать это изменение.

API JPS также включает два дополнительных связанных с носителями класса Атрибута, которые не являются атрибутами IPP: MediaSize и MediaPrintableArea.


MediaSize

MediaSize не является атрибутом запроса; это - перечисление бумажных размерностей и отображение на экземпляры MediaSizeName. Каждый экземпляр MediaSizeName обычно сделал, чтобы MediaSize возразил связанный с этим так, чтобы клиенты могли получить размерности бумаги, которую определяет экземпляр MediaSizeName. Чтобы определить размерности экземпляра MediaSizeName, вызовите:

MediaSize size = MediaSizeName.getMediaSizeForName(paper);

MediaPrintableArea

MediaPrintableArea используется в запросе печати в соединении с совместимые Носители, чтобы определить область бумаги, на которой можно напечатать. Аппаратные средства принтера обычно определяют печатаемую область страницы, которая редко является всей страницей. Поэтому приложение должно определить, какая печатаемая область принтер определяет для определенного размера носители, чтобы гарантировать, что данные печати могут соответствовать в пределах этой области.

Например, чтобы определить поддерживаемую печатаемую область для 5" x 7" бумаги, приложение должно выбрать значение атрибута размера носителей, которое соответствует этой бумаге размера, и затем запросите службу печати с размером носителей:

PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.NA_5X7);
MediaPrintableArea printableArea =
(MediaPrintableArea)service.
        getSupportedAttributeValues(MediaPrintableArea.class, null, aset);
Возвращенное значение указывает на самую большую печатаемую область, которая может поддерживаться тем принтером для того формата бумаги.

Место назначения

Целевой атрибут позволяет Вам перенаправлять свои данные печати к файлу вместо того, чтобы отправить это устройству принтера. Опция "печати к файлу" очень распространена в пользовательских диалоговых окнах, но spooled данные не всегда применимы, потому что это мог бы быть специфичный для устройства растр, который может только быть интерпретирован устройством, от которого это было перенаправлено. Поэтому API Службы печати Java требует, чтобы клиент запросил службу печати, чтобы определить, может ли это перенаправить вывод к файлу. Служба не могла бы поддерживать категорию вообще, или это могло бы поддерживать только определенные значения. Например, так как API JPS может использоваться в сетевой среде, в которой форматирование данных печати не происходит на главном компьютере, определяя, что локальный файл для вывода не мог бы быть возможным, потому что у службы, форматирующей данные, не могло бы быть доступа к локальным файловым системам клиента. Целевой атрибут берет URL в качестве значения места назначения, которое позволяет сетевому принтеру использовать протокол, такой как протокол передачи файлов, чтобы загрузить отформатированные данные печати. Однако, большинство принтеров, которые поддерживают этот атрибут, будет работать как часть окружения и может принять "файл:" протокол URL. Этот фрагмент кода перенаправляет вывод к файлу, названному out.prn на c: диск:

aset.add(new Destination("file:c:\out.prn"));

SheetCollate

Атрибут SheetCollate позволяет Вам определять, сопоставляется ли Ваше задание печати, когда Вы печатаете больше чем одну копию многостраничного документа. Например, страницы 3 страниц, сопоставленное задание с 2 копиями напечатает как (1,2,3,1,2,3), но страницы того же самого документа, представленного на несопоставленном задании с 2 копиями, будут напечатаны как (1,1,2,2,3,3). Этот атрибут не находится в версии 1.1 спецификации IPP, но это очень полезно, и большинство принтеров поддерживает это. Этот фрагмент кода демонстрирует, как определять сопоставленное задание:

aset.add(SheetCollate.COLLATED);

Стороны

Некоторые принтеры, особенно высокопроизводительные принтеры, могут напечатать с обеих сторон бумаги. Атрибут Сторон позволяет приложениям определять двухстороннюю печать вместо обычного значения по умолчанию односторонней печати. Двухсторонняя печать иногда упоминается как печать "падения" или "дуплекс". Эти два значения дифференцируются ориентацией вывода. API Службы печати Java именует дуплекс как "два примкнутых длинных края" и падение как "два примкнутых коротких края". Считайте спецификацию API для Сторон для дальнейшего объяснения. Этот фрагмент кода specifiesthat печать задания двухсторонние документы:

aset.add(Sides.DUPLEX);

Точность

Атрибут Точности является булевым атрибутом IPP, который представляет, должно ли задание печати быть отклонено, если служба печати не поддерживает атрибута, определенного в запросе печати. Точность не является атрибутом, который должны будут рассмотреть много разработчиков, но это - важный атрибут в контексте API JPS. Значение по умолчанию является FIDELITY_FALSE, который указывает, что задание печати не должно быть отклонено, если служба печати не поддерживает атрибут, определенный в запросе печати. Например, если приложение определяет ориентацию обратной среды, но принтер не поддерживает обратную среду, задание отклоняется, если точность является истиной, но если точность является ложью тогда, принтер мог бы заменить разумной альтернативой, такой как альбомная ориентация. Атрибут Точности позволяет приложениям решать, напечатать ли только документ точно как определено или напечатать это даже при том, что принтер не мог бы поддерживать все атрибуты. Этот фрагмент кода определяет, что задание должно быть отклонено, если принтер не поддерживает требуемые атрибуты:

aset.add(Fidelity.FIDELITY_TRUE);
Для случаев, в которых точность важна, API Службы печати Java обеспечивает много инструментов для приложений, чтобы запросить точно, что может поддерживаться для определенного запроса печати. См. различные методы запроса в интерфейсе PrintService.

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

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