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