//打印文件的选择
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());
