如何在Cups4J中创建一个原始(-o raw)PrintJob?

时间:2016-04-21 06:48:00

标签: java cups cups4j

目前我在使用cups4j时遇到了一些问题。例如,在linux下你可以在这样的杯子打印机上打印:

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

对我来说重要的是“-o raw”标志。

我的问题是在使用cups4j进行打印时,我不知道如何设置此标志。剪切下一个正确的工作代码显示了我在CupsPrinter上打印cups4j PrintJob的方法。

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

-o raw选项为described here pretty well

  

-o raw选项允许您直接将文件发送到打印机而无需过滤。从为您的打印机提供自己的“打印机驱动程序”的应用程序打印时,有时需要这样做:

就像我说的那样,打印本身就像一个魅力,但我不知道如何添加这个特定的标志。也许有人可以形容我怎么做。

1 个答案:

答案 0 :(得分:4)

在分析了终端和java程序中通过wireshark(我只是喜欢它)发送给CUPS的软件包后,我发现以下内容对我有用:

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);