2016-04-21 5 views
1

В настоящее время у меня есть некоторые проблемы с использованием cups4j. Например под Linux вы можете распечатать на принтере чашки, как это:Как создать сырой (-o raw) PrintJob в Cups4J?

echo -e "test Text\\r" | lp -o raw -h <IP-ADRESS> -d <PRINTER-NAME> 

Главное для меня является «-o сырой» флаг.

Моя проблема заключается в том, чтобы причислять с cups4j, я не знаю, как установить этот флаг. Следующий правильный рабочий код с отпечатками показывает мой метод, который печатает cups4j PrintJob на CupsPrinter.

private PrintRequestResult print(CupsPrinter printer, PrintJob job) throws Exception { 
    return printer.print(job); 
} 

-о сырой вариант described here pretty well:

Опция -o сырье позволяет передавать файлы непосредственно на принтер без фильтрации. Это иногда требуется при печати из приложений, которые предоставляют свои собственные «драйверы принтера» для вашего принтера:

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

ответ

3

После анализа пакетов, отправленных в 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); 
+0

Спасибо за ваш ответ. Я собираюсь попробовать это и дать отзыв. – Charmin

+1

Работает как шарм, спас меня некоторое время, спасибо! – chris

 Смежные вопросы

  • Нет связанных вопросов^_^