VVL1295

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  获取打印机服务,进而获得名字:

  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()的返回值就是要打印的文件的绝对路径。

  以上。

posted on 2016-07-29 20:24  bobo2018  阅读(2215)  评论(0)    收藏  举报