以下是我在Linux上运行时的代码,检测到我的打印机并打印出来。但是当我在Windows上运行它时,它没有检测到我的打印机。
printbutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DocFlavor docflavor = DocFlavor.INPUT_STREAM.TEXT_PLAIN_UTF_8;
PrintRequestAttributeSet attr_set = new HashPrintRequestAttributeSet();
attr_set.add(new Copies(1));
PrintService[] service = PrintServiceLookup.lookupPrintServices(null, null);
if (service.length==0) {
JOptionPane.showMessageDialog(null, "No Printer Selected");
}
else if (service.length > 0) {
System.out.println("Selected printer is " + service[0].getName());
DocPrintJob pj = service[0].createPrintJob();
{
PrintService ps = pj.getPrintService();
FileInputStream fis = null;
try {
File file = new File("c:\\NewFile.txt");
fis = new FileInputStream(file);
Doc doc = new SimpleDoc(fis, docflavor, null);
pj.print(doc, attr_set);
} catch (PrintException ex) {
Logger.getLogger(PrintButtonView.class.getName()).log(Level.SEVERE, null, ex);
} catch (FileNotFoundException ex) {
Logger.getLogger(PrintButtonView.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
fis.close();
} catch (IOException ex) {
Logger.getLogger(PrintButtonView.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
});
}
答案 0 :(得分:0)
您是否安装了安全管理器以及正确的权限?来自doc:
PrintServiceLookup实现者是 建议检查一下 SecurityManager.checkPrintJobAccess() 拒绝访问不受信任的代码。 遵循此建议政策 表示不受信任的代码可能不是 能够找到任何打印服务。 下载的applet是最常见的 不受信任的代码示例。
此检查是针对每次查找进行的 服务基础,以允许灵活性 反映需求的政策 不同的查询服务。
注册的服务 registerService(PrintService)不会 如果a,请包含在查找结果中 已安装安全管理器及其 checkPrintJobAccess()方法否认 访问。