Выберите лоток / лоток при печати с помощью javax.print - PullRequest
4 голосов
/ 01 октября 2011

Я хотел бы указать входные лотки при печати с Java. Я нашел класс MediaTray, который должен соответствовать входным лоткам:

The following standard values are defined for input-trays (from ISO
DPA and the Printer MIB):

'top': The top input tray in the printer.
'middle': The middle input tray in the printer.
'bottom': The bottom input tray in the printer.
'envelope': The envelope input tray in the printer.
'manual': The manual feed input tray in the printer.
'large-capacity': The large capacity input tray in the printer.
'main': The main input tray
'side': The side input tray

Источник: http://tools.ietf.org/html/rfc2911

Проблема в том, что я получаю номер из приложения, в котором указан входной лоток. Могу ли я просто отобразить значения enum int или как обычно получить значение enum с помощью числа? Это даже официально поддерживается для нумерации лотков?

Мне не удалось найти атрибуты в RFC, которые соответствуют выходным лоткам. Есть ли способ сделать это?

И самый важный вопрос: интерфейс принтера более или менее надежен? Большинство тем, которые я нашел, когда люди спрашивали о лотках, в конце концов перестали, потому что они не могли заставить его работать.

Любой опыт будет оценен.

Ответы [ 3 ]

2 голосов
/ 01 октября 2011

Эти атрибуты определены в javax.print.attribute.standard.MediaTray. См. Также, Стандартные атрибуты: Носитель .

1 голос
/ 07 апреля 2014

Как печатать в «Лоток 1» (если он существует):

PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
Media[] supportedMedia = (Media[]) prnJob.getPrintService().getSupportedAttributeValues(Media.class, null, null);
for (Media m : supportedMedia) {
    if (m.toString().equals("Tray 1")) {
        aset.add(m);
        break;
    }
}
1 голос
/ 06 ноября 2011

Если вы хотите использовать номер действительного лотка вместо общих констант, таких как TOP, вам придется выполнить дополнительное кодирование. Нет перечисления, в котором перечислены все номера лотков для данного принтера, потому что на момент кодирования неизвестно, сколько будет лотков. Вам необходимо запросить у службы печати все поддерживаемые значения атрибутов для типа атрибута Media.class. Это даст вам список различных типов. Выведите результаты, лотки должны быть где-то в этом списке. Важно взять лоток из этого списка и не создавать его самостоятельно, поскольку с этим связан некоторый внутренний код в структуре печати. ​​

Примечание : API печати имеет некоторые ошибки, связанные с печатью в трее (особенно в Unix). Чтобы решить их быстро, проголосуйте за: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7107175 и / или http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7107138

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...