获取打印机服务,进而获得名字:
public JComboBox<String> getComboBoxPrinterName() { if (comboBoxPrinterName == null) { comboBoxPrinterName = new JComboBox<String>(); try { PrintService[] pss = PrinterJob.lookupPrintServices(); for (PrintService ps : pss) { comboBoxPrinterName.addItem(ps.getName()); } } catch (Exception ex) { ex.printStackTrace(); } } return comboBoxPrinterName; }
进行打印,需要项目根目录下存在文件夹,文件夹里面有个可运行程序.exe文件和一个.dll文件,接下来上代码:
private void exePrint(File pdf) throws IOException { String printerName = paPrint.getComboBoxPrinterName().getSelectedItem().toString(); Runtime.getRuntime().exec("printinvoke\\gswin32c.exe -dFIXEDMEDIA -dDEVICEWIDTHPOINTS="+(float)(230*72/25.4f)+" -dDEVICEHEIGHTPOINTS="+(float)(127*72/25.4f)+" -dNoCancel -dNOPAUSE -dBATCH -q -sDEVICE=mswinpr2 -sOutputFile=\"%printer%"+printerName+"\" "+ pdf.getPath()); }
其中,printerName是PrintService对象getName()方法的返回值,pdf.getPath()的返回值就是要打印的文件的绝对路径。
以上。