Как создать raw (-o raw) PrintJob в Cups4J?
В настоящее время у меня есть некоторые проблемы с использованием cups4j. Например, в Linux вы можете печатать на принтере для чашек следующим образом:
echo -e "test Text\\r" | lp -o raw -h <IP-ADRESS> -d <PRINTER-NAME>
Для меня важен флаг "-o raw".
Моя проблема при печати с cups4j, я не знаю, как установить этот флаг. Следующий исправленный рабочий код показывает мой метод, который печатает cups4j PrintJob на CupsPrinter.
private PrintRequestResult print(CupsPrinter printer, PrintJob job) throws Exception {
return printer.print(job);
}
Опция -o raw описана здесь довольно хорошо:
Опция -o raw позволяет отправлять файлы напрямую на принтер без фильтрации. Это иногда требуется при печати из приложений, которые предоставляют собственные "драйверы принтера" для вашего принтера:
Как я уже сказал, сама печать работает как шарм, но я не знаю, как добавить этот конкретный флаг. Может быть, кто-то может описать мне, как это сделать.
1 ответ
Проанализировав пакеты, отправленные в CUPS через wireshark (я просто обожаю это) из терминала и java-программы, я обнаружил следующее, которое работает для меня:
CupsClient cupsClient = new CupsClient(IP, port);
URL url = new URL(printerName);
CupsPrinter cupsPrinter = cupsClient.getPrinter(url);
HashMap<String, String> map = new HashMap<>();
map.put("document-format", "application/vnd.cups-raw");
PrintJob printJob = new PrintJob.Builder(bytes).attributes(map).build();
PrintRequestResult printRequestResult = cupsPrinter.print(printJob);