Проблема с принтером в Java - PullRequest
1 голос
/ 26 мая 2011

У меня проблема, что происходит, я хочу отправить на печать файл на принтере, для которого я получаю 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 принтера, который я хочу, а не сеть, которая у меня есть, и именно там я не знаю как, кто-то, пожалуйста, помогите мне, Я искал решение, но у меня не было хороших результатов.

Ответы [ 2 ]

1 голос
/ 26 мая 2011

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

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);
}
0 голосов
/ 26 июля 2018
 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

...