问题描述:我需要打印的是一些 .TXT 文档,当然需要可以设置打印规格、打印数、横向/纵向打印、单面/多面等
现在问题就是通过 DocFlavor 和 PrintRequestAttributeSet 这两个参数的传入来获取打印服务时,总是获取
不到任何的打印服务...
而我通过另一方法 PrintServiceLookup.lookupDefaultPrintService() 可以获取到默认打印机,问题是
默认打印机不能打印 PrintRequestAttributeSet 对象设置的属性,即规格、纵向/横向、打印数等具体代码片段如下:DocFlavor docFlavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintRequestAttributeSet printRAS = new HashPrintRequestAttributeSet();

// 指定打印纸张规格
printRAS.add(mediaSizeName);

// 指定打印份数
printRAS.add(new Copies(iPrintNum));

// 指定横向还是纵向打印
printRAS.add(orientationRequest);

// 指定打印属性:单面打印
printRAS.add(Sides.ONE_SIDED);

// 指定打印文档与装订点进行绑定
printRAS.add(Finishings.STAPLE);
// 去掉下句代码的注释时,返回5个打印服务(我机器上连着5个打印机),即很正常
// PrintService printService[] = PrintServiceLookup.lookupPrintServices(docFlavor,null);
// 去掉下句代码的注释时,也是返回5个打印服务
// PrintService printService[] = PrintServiceLookup.lookupPrintServices(docFlavor,null);
// 可是到了下面这句,就是没有打印服务返回,很迷惑!
PrintService printService[] = PrintServiceLookup.lookupPrintServices(docFlavor,printRAS);
System.out.println("PrintService.length is: " + printService.length);// 以下获取默认打印服务来进行打印时,不能按照指定属性来进行打印...
// 比如我设置要打印5份时,却总是打印一份...
PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 
希望高人指点迷津,谢谢!