首页 文章

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

提问于
浏览
1

目前我在使用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 回答

  • 3

    在通过wireshark(我只是喜欢它)从终端和java程序分析发送给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);
    

相关问题