Как решить проблему, касающуюся PrintServiceLookup.lookupPrintService () в Windows - PullRequest
0 голосов
/ 16 сентября 2009

Ниже приведен код, когда я работаю в 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);
                            }
                        }
                    }
                }
            }
    });

}

1 Ответ

0 голосов
/ 16 сентября 2009

У вас установлен менеджер безопасности и правильные разрешения? Из документа :

Разработчик PrintServiceLookup Рекомендуется проверить на SecurityManager.checkPrintJobAccess () запретить доступ к ненадежному коду. Следуя этой рекомендуемой политике означает, что ненадежный код не может быть в состоянии найти любые услуги печати. Загруженные апплеты являются наиболее распространенными пример ненадежного кода.

Эта проверка выполняется при поиске основа обслуживания, чтобы обеспечить гибкость в политика, отражающая потребности различные службы поиска.

Услуги, которые зарегистрированы registerService (PrintService) не будет быть включены в результаты поиска, если менеджер безопасности установлен и его Метод checkPrintJobAccess () запрещает доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...