Как отменить задание печати с помощью 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);
}
}