本地打印机获取以及文件打印 java

选择相应的文件进行打印

//打印文件的选择
JFileChooser fileChooser = new JFileChooser(); //创建打印作业   
            int state = fileChooser.showOpenDialog(null);   //显示选择文件的弹出框
            File file = null;
            if(state == fileChooser.CANCEL_OPTION){            
                 file = new File("c:/hello.doc");             //取消时,默认的打印文件名
            }else{
                 file = fileChooser.getSelectedFile();    //弹出框时选择的文件
            }
//获取本地打印机,弹出打印窗口
//构建打印请求属性集
        PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
        //设置打印格式,autosense 自动类型
        DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
        //可用的打印机列表(字符串数组)
        PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
        for(int i=0;i<printService.length;i++){
            System.out.println(printService[i].getName());
        }
        //当前默认打印机
        PrintService PS = PrintServiceLookup.lookupDefaultPrintService();
        System.out.println(PS.getName());
        /**
         * printService  :本地所有打印机列表
         * PS :默认选择的打印机
         * flavor :文件类型
         * pras : 打印请求属性集
         */
PrintService service = ServiceUI.printDialog(null, 200, 200, printService, PS, flavor, pras);  //选择打印机打印的弹出框
//选择打印机进行文件打印
     if(service != null){   
              try {   
                  DocPrintJob job = service.createPrintJob(); //创建打印作业   
                  FileInputStream fis = new FileInputStream(file); //构造待打印的文件流   
               /*   DocAttributeSet das = new HashDocAttributeSet();   */
                  Doc doc = new SimpleDoc(fis, flavor, null);     //fis是待打印的文件流,flavor是待打印的文件类型
                  job.print(doc, pras);   
                  System.out.println("打印成功");
              } catch (Exception e) {   
                  e.printStackTrace();   
                  System.out.println("打印失败");
              }   
    }  }
}
//打印属性添加
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); 
// 纵向打印 
pras.add(OrientationRequested.LANDSCAPE); 
// 设定打印区域大小 
MediaPrintableArea mp = new MediaPrintableArea(15f, 0f, 135f, 100f, Size2DSyntax.MM); 
// 设定纸张大小 
// MediaSizeExp 为重写MediaSize代码 
MediaSizeExp ms = new MediaSizeExp(140f, 105.5f,, Size2DSyntax.MM, MediaSizeName.INVOICE);// 100,105.5 
pras.add(ms.getMediaSizeName()); 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值