Проблема с принтером в java

У меня проблема: я хочу отправить файл на печать на принтер, для которого я получаю IP-адрес принтеров, подключенных к сети, и выбираю первый, вот код для этого:

PrintService[] service = PrinterJob.lookupPrintServices();// list of ip address 

PrinterJob printJob = PrinterJob.getPrinterJob();

printJob.setPrintService(service[0]);//I get the first address 

Но теперь я хочу назначить строку, содержащую IP-адрес:\\10.100.20.26\My printer того принтера, который мне нужен, а не сети, которая у меня есть, и именно там, что не знаю, кто-нибудь, помогите мне, я искал решение, но у меня не было хороших результатов.


person Margie    schedule 26.05.2011    source источник


Ответы (2)


Я предполагаю, что у PrintService есть какое-то свойство, которое дает вам его путь. Итак, просмотрите массив PrintService, чтобы найти тот, который соответствует вашему пути, и используйте его:

PrintService[] services = PrinterJob.lookupPrintServices();// list of ip address
String myPrinter = "10.100.20.26\My printer";
PrintService serviceToUse = null;

for (PrintService service: services) {
    if (service.getPath().equals(myPrinter)) {
        serviceToUse = service;
        break;
    }
}

if (serviceToUse != null) {
    PrinterJob printJob = PrinterJob.getPrinterJob();

    printJob.setPrintService(serviceToUse);
}
person Abhinav Sarkar    schedule 26.05.2011
comment
Мммм.... Хочу добавить новый ip адрес, не из списка сервисов, потому что у меня есть String myPrinter = 10.100.20.26\My принтера; но я не знаю, как печатать на этот IP-адрес - person Margie; 26.05.2011

 public void printFile(File file, String printerIp) throws PrintException, IOException {

        Socket socket = new Socket(printerIp, 9100);

        FileInputStream fileInputStream = new FileInputStream(file);
        byte [] mybytearray  = new byte [(int)file.length()];

        fileInputStream.read(mybytearray,0,mybytearray.length);

        OutputStream outputStream = socket.getOutputStream();

        outputStream.write(mybytearray,0,mybytearray.length);

             //Curious thing is that we have to wait some time to make more prints.
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {

        }

        outputStream.flush();
        outputStream.close();
        socket.close();
        fileInputStream.close();
    }

    //void main
      File f = new File("C:\\Users\\SHINWAR\\Desktop\\link.txt");
    try {
        printFile(f, "192.168.1.100"); //f : file to print , ip printer
    } catch (Exception e) {
        System.out.println(e + "--file");
    }

распечатать с ip и отправить файл .txt

person Shinwar ismail    schedule 26.07.2018