同事抱怨说,吾司产品,同一家的LINUX,有的架构能打印,有的架构不能打印。吾试了一下,报错:
Caused by: java.io.IOException: error=1 running: ‘/usr/bin/lpr’ ‘-PABC-123-Series’ ‘-JJava Printing’ ‘/tmp/javaprint133.ps’ lpr: ABC-123-Series: unknown printer
单独执行lpr,卡住;加个参数(如打印机),报错。怎么办?看了一下PSPrinterJob的代码,注意到有个函数printExecCmd,其中代码如下:
private String[] printExecCmd(String printer, String options, boolean noJobSheet, String banner, int copies, String spoolFile) { if ((osname.equals("Linux") || osname.contains("OS X"))) { execCmd[n++] = "/usr/bin/lpr"; } else { execCmd[n++] = "/usr/bin/lp"; }
当lpr出错的时候,能不能再执行一次lp?于是吾在调用的地方做了个处理,果然可以了。