Как отменить задание печати с помощью PJL и Java после того, как оно перекинулось через сеть?

У меня проблема с отменой заданий на печать, когда я могу распечатать успех после выполнения метода печати с использованием java, подобного этому

          public static void print(byte[] bytes, String jobName, String printerIpAdd, Integer printerPort, String trayNumber) {

        System.out.println("port " + printerPort);
        try (Socket socket = new Socket(printerIpAdd, printerPort)) {
            DataOutputStream out = new DataOutputStream(socket.getOutputStream());
            System.out.println("bytes[] = " + bytes.length);
            out.write(27); //esc
            out.write("%-12345X@PJL\n".getBytes());
            out.write(("@PJL SET JOBNAME=" + jobName + "\n").getBytes());
            out.write(("@PJL SET LPAPERSOURCE=TRAY" + trayNumber + "\n").getBytes());
            out.writeBytes("@PJL SET PALETTESOURCE = DEVICE\n");
            out.write(("@PJL SET PAPER=A5\n").getBytes());
            out.write(("@PJL SET COPIES=1"\n").getBytes());
            out.write("@PJL ENTER LANGUAGE=PDF\n".getBytes());
            out.write(bytes); //data
            out.write(27); //esc
            out.write("%-12345X@PJL\n".getBytes());
            out.flush();
            out.close();
        } catch (IOException ex) {
            LOGGER.error(ex);
        }
    }

проблема возникает, когда в принтере нет бумаги или когда открыта крышка или лоток снят, задание на печать приостановлено, поэтому мне нужно отменить предыдущий заказ для принтера. поэтому я пытаюсь использовать этот код, но не работаю со мной, и создаю другое задание для печати вместо отмены

      public static void cancelPrintJob(String jobName, String printerIpAdd, Integer printerPort) {
        System.out.println("port " + printerPort);
        try (Socket socket = new Socket(printerIpAdd, printerPort)) {
            DataOutputStream out = new DataOutputStream(socket.getOutputStream());

            /*
            <ESC>%-12345X@PJL <CR><LF>
            @PJL DEFAULT JOBID =ON <CR><LF>
            @PJL USTATUS JOB = ON <CR><LF>
            @PJL JOB <CR><LF>
                <ESC>%-12345X@PJL <CR><LF>
                @PJL ENTER LANGUAGE = PCL <CR><LF>
                <ESC>E...PCLJob.!!!JobCancel !
            @PJL EOJ <CR><LF>
            <ESC>%-12345X

             */
            out.write(27); //esc
            out.write("%-12345X@PJL\r\n".getBytes());
            out.write(("DEFAULT JOBID =ON\r\n").getBytes());
            out.write(("@PJL USTATUS JOB = ON\r\n").getBytes());
            out.write(("@PJL JOB\r\n").getBytes());
            out.write(27); //esc
            out.write("%-12345X@PJL\\rn".getBytes());
            out.write("@PJL ENTER LANGUAGE = PCL\r\n".getBytes());
            out.write(27); //esc
            out.write(("@PJL EOJ NAME =" + jobName + "\r\n").getBytes());
            out.write(27); //esc
            out.write("%-12345X@PJL\n".getBytes());
            out.flush();
            out.close();
        } catch (IOException ex) {
            LOGGER.error(ex);
        }
    }

0 ответов

Другие вопросы по тегам