java 调用打印机API无法打印,但是直接打印可以,请问有人遇到过这样的问题吗? 5
java调用打印机的代码如下:publicstaticvoidmain(String[]args){PrintRequestAttributeSetpras=newHas...
java调用打印机的代码如下:
public static void main(String[] args) {
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService printService[] = PrintServiceLookup
.lookupPrintServices(flavor, pras);// 用户可选用的PrintService实例数组。
PrintService activePrintService = null;
for(PrintService service : printService){
System.out.println(service.getName());
if(service.getName().equals("HP Deskjet 1000 J110 series")){
activePrintService = service;
}
}
/////////////////////
if (printService.length > 0) {
DocPrintJob pj = activePrintService.createPrintJob();
try {
FileInputStream fis = new FileInputStream("d:/print2.txt");
Doc doc = new SimpleDoc(fis, flavor, null);
pj.print(doc, pras);
} catch (FileNotFoundException fe) {
fe.printStackTrace();
} catch (PrintException e) {
e.printStackTrace();
}
}
}
代码执行后,文档已经进入打印机,并提示“正在打印”,但打印机没有反应,求解。。。。。。 展开
public static void main(String[] args) {
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService printService[] = PrintServiceLookup
.lookupPrintServices(flavor, pras);// 用户可选用的PrintService实例数组。
PrintService activePrintService = null;
for(PrintService service : printService){
System.out.println(service.getName());
if(service.getName().equals("HP Deskjet 1000 J110 series")){
activePrintService = service;
}
}
/////////////////////
if (printService.length > 0) {
DocPrintJob pj = activePrintService.createPrintJob();
try {
FileInputStream fis = new FileInputStream("d:/print2.txt");
Doc doc = new SimpleDoc(fis, flavor, null);
pj.print(doc, pras);
} catch (FileNotFoundException fe) {
fe.printStackTrace();
} catch (PrintException e) {
e.printStackTrace();
}
}
}
代码执行后,文档已经进入打印机,并提示“正在打印”,但打印机没有反应,求解。。。。。。 展开
2个回答
展开全部
代码逻辑有问题:
if (printService.length > 0) {
// 这个地方应该判断activePrintService != null,
因为你是用的打印机是activePrintService来打印,
而不是判断系统有有打印机就调用activePrintService来打印。
if (printService.length > 0) {
// 这个地方应该判断activePrintService != null,
因为你是用的打印机是activePrintService来打印,
而不是判断系统有有打印机就调用activePrintService来打印。
追问
@zoufeng1126 谢谢你,这个地方是我代码在修改的过程中不太规范,但不是主要问题,pj.print(doc, pras);这行代码确定是执行了的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询