Как определить, подключен ли принтер к вашему компьютеру или нет в Java?

Я создаю один графический интерфейс на Swing Java. Мне нужно использовать одну кнопку «Печать», которая напрямую начнет печать заданного мной файла, не открывая диалоговое окно «Печать» по умолчанию. Мне нужно сначала проверить, подключен ли принтер к моему компьютеру или нет?


Может использоваться PrintServiceLookup?

Реализации этого класса предоставляют службы поиска для служб печати (обычно эквивалентных принтерам) определенного типа.

  DocFlavor Flavour = DocFlavor.INPUT_STREAM.POSTSCRIPT; PrintRequestAttributeSet aset = new HashPrintRequestHashAttributeSet (); aset.add (MediaSizeName.ISO_A4);  .lookupPrintServices (разновидность, набор); если (pservices.length> 0) {DocPrintJob pj = pservices [0] .createPrintJob (); //....}  

Примечание: количество PrintService должно быть не меньше одного, если есть принтер. Потенциально как минимум 2, если есть реальный принтер, так как на вашем компьютере могут быть установлены чисто программные принтеры. См. Также этот поток.

В зависимости от платформы и jdk, в нем могут быть ошибки, но в противном случае следующий метод должен, по крайней мере, перечислить принтеры:

  import java.awt.print. *; import javax.print. *; import javax.print.attribute. *; import java.text. *; import javax.print.attribute.standard. *; общедоступный  class ShowPrinters {public ShowPrinters () {} public static void main (String [] args) {DocFlavor myFormat = DocFlavor.SERVICE_FORMATTED.PRINTABLE;  PrintRequestAttributeSet aset = новый HashPrintRequestAttributeSet ();  PrintService [] services = PrintServiceLookup.lookupPrintServices (myFormat, aset);  System.out.println («Доступны следующие принтеры»);  for (int i = 0; i  

В этом исходном коде eclipse вы видели использование PrinterState для проверки того, действительно ли принтер подключен:

  AttributeSet attributes = new HashPrintServiceAttributeSet (новое имя принтера (имя_принтера, Locale.getDefault ())); PrintService [] services = PrintServiceLookup.lookupPrintServices (DocFlavor.SERVICE_FORMATTED.PRINTABLE, атрибуты, атрибуты)  ]; PrintServiceAttributeSet printServiceAttributes = printService.getAttributes (); PrinterState printerState = (PrinterState) printServiceAttributes.get (PrinterState.class);  

Проверьте, не имеет ли значение printerState значение null. Примечание: этого может быть не всегда достаточно (см. Эту ветку).

Оцените статью
Botgadget.ru
Добавить комментарий