使用Java向HP 4515打印机发送PJL命令

使用Java向HP 4515打印机发送PJL命令,java,java-print,pjl,Java,Java Print,Pjl,我正在尝试将打印机作业语言命令发送到HP 4515打印机。但是,打印机不会打印任何内容。下面是我的代码。打印机位于远程,我只能请那里的人检查是否打印出任何内容。不幸的是没有打印出来。PJL命令的格式是否不好?如何使用Java和PJL获取作业状态 socket = new Socket("192.168.1.101", 9100); out = new DataOutputStream(socket.getOutputStream()); DataInputSt

我正在尝试将打印机作业语言命令发送到HP 4515打印机。但是,打印机不会打印任何内容。下面是我的代码。打印机位于远程,我只能请那里的人检查是否打印出任何内容。不幸的是没有打印出来。PJL命令的格式是否不好?如何使用Java和PJL获取作业状态

  socket = new Socket("192.168.1.101", 9100);
        out = new DataOutputStream(socket.getOutputStream());
        DataInputStream input = new DataInputStream(socket.getInputStream());


        final char ESC = 0x1b;
        final String UNESCAPED_UEL  = "%-12345X";
        String UEL = ESC + UNESCAPED_UEL;
        out.writeBytes(UEL); 
        out.writeBytes("@PJL\r\n");

        //out.writeBytes("@PJL SET MEDIASOURCE = TRAY2\r\n"); //I tried this line of code as well
        out.writeBytes("@PJL SET PAPER = LETTER\r\n");

        out.writeBytes("@PJL ENTER LANGUAGE = PDF\r\n");
        for(int i=0; i<copies; i++) {
            out.write(ps, 0, ps.length); //ps is of type byte[]. It contains the content of PostScript file
        }
        out.flush();
如前所述,您似乎缺少关闭“通用退出语言”命令(UEL)。在PJL中是必需的。它定义了任何基于PJL的数据流的开始和结束

例如:

socket=新套接字(“192.168.1.101”,9100);
out=新的DataOutputStream(socket.getOutputStream());
DataInputStream输入=新的DataInputStream(socket.getInputStream());
最终字符ESC=0x1b;
最终字符串unscaped_UEL=“%-12345X”;
字符串UEL=ESC+unscaped_UEL;
out.writeBytes(UEL);
out.writeBytes(“@PJL\r\n”);
out.writeBytes(@PJL SET PAPER=LETTER\r\n”);
out.writeBytes(@PJL ENTER LANGUAGE=PDF\r\n”);
对于(int i=0;i
TRAY 1 SIZE 
TRAY 1 TYPE 
TRAY 2 SIZE LETTER
UNIT OF MEASURE 
X DIMENSION INCHES (5.83 - 8.5)
Y DIMENSION INCHES (8.27 - 14.0)
TRAY 2 TYPE 
socket = new Socket("192.168.1.101", 9100);
out = new DataOutputStream(socket.getOutputStream());
DataInputStream input = new DataInputStream(socket.getInputStream());


final char ESC = 0x1b;
final String UNESCAPED_UEL  = "%-12345X";
String UEL = ESC + UNESCAPED_UEL;
out.writeBytes(UEL); 
out.writeBytes("@PJL\r\n");
out.writeBytes("@PJL SET PAPER = LETTER\r\n");
out.writeBytes("@PJL ENTER LANGUAGE = PDF\r\n");
for(int i=0; i<copies; i++) {
    out.write(ps, 0, ps.length);
}
out.writeBytes(UEL); // <-- add this
out.flush();