Java实现获取本地打印机并且打印文件

2022-07-07 09:13 阅读 930 次 评论 0 条
//打印文件的选择
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()); 

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:Java实现获取本地打印机并且打印文件 | 雨晨博客
分类:JAVA, 程序笔记 标签:

发表评论


表情