Использование Java для отправки команд PJL на принтер HP 4515 - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь отправить команды языка задания принтера на принтер 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();

Настройки бумаги принтера:

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 

1 Ответ

0 голосов
/ 21 апреля 2019

Как уже отмечалось здесь , похоже, вам не хватает закрывающей команды «Универсальный выходной язык» (UEL).Требуется в PJL.Он определяет начало и конец любого потока данных на основе 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 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();

Я не могу сказать, что-то не так с вашей командой PJLсинтаксис, но для справки это работает для меня .

...