Problema
Ao realizar uma impressão é exibido nos logs a seguinte falha: “Invalid name of PrintService”. A Aplicação Oobj não consegue enviar o documento para o Spooler de Impressão, pois a impressora não é identificada.
Exemplo de log:
2709 15:40:46,238 [Thread-65] WARN ConsumidorImpressao - Falha no servico de impressao: Erro ao imprimir o DAME 26130903437057000140550010000105581662203739 : java.awt.print.PrinterException: Invalid name of PrintService.. ME: 26130903437057000140550010000105581662203739 br.com.oobj.me.impressao.exception.ImpressaoException: Erro ao imprimir o DAME 26130903437057000140550010000105581662203739 : java.awt.print.PrinterException: Invalid name of PrintService. at br.com.oobj.me.impressao.ServicoImpressao.processar(ServicoImpressao.java:237) at br.com.oobj.me.impressao.ConsumidorImpressao.novaMensagem(ConsumidorImpressao.java:99) at br.com.oobj.util.fila.ConsumidorNotificante.run(ConsumidorNotificante.java:240) at br.com.oobj.me.impressao.ConsumidorImpressao.run(ConsumidorImpressao.java:74) Caused by: net.sf.jasperreports.engine.JRException: java.awt.print.PrinterException: Invalid name of PrintService. at net.sf.jasperreports.engine.export.JRPrintServiceExporter.exportReport(JRPrintServiceExporter.java:156) at gov.sefaz.util.Impressora.imprimirJasperPrint(Impressora.java:249) at gov.sefaz.util.Impressora.imprimirJasperPrint(Impressora.java:187) at gov.sefaz.util.Impressora.imprimirJasperPrint(Impressora.java:192) at br.com.oobj.me.impressao.ServicoImpressao.processar(ServicoImpressao.java:220) ... 3 more Caused by: java.awt.print.PrinterException: Invalid name of PrintService. at sun.awt.windows.WPrinterJob.setNativePrintService(Native Method) at sun.awt.windows.WPrinterJob.setPrintService(Unknown Source) at net.sf.jasperreports.engine.export.JRPrintServiceExporter.exportReport(JRPrintServiceExporter.java:152) ... 7 more
Em todos os casos, a ocorrência do problema foi ocasionada por falta de permissão. A impressora configurada como padrão na Aplicação Oobj, apesar de instalada no servidor, muitas vezes está inacessível ao usuário que executa o serviço.
Solução/Procedimento
Existem 3 possíveis soluções para o problema:
1 – Dar a impressora configurada na Aplicação Oobj, permissão a “Todos” usuários;
2 – Caso o procedimento acima não tenha dado certo, é possível configurar o serviço de impressão para iniciar com um usuário que tenha permissão nas impressoras;
Normalmente o problema está associado a impressoras mapeadas em rede. Quando houver uma impressora em rede e este problema for identificado, pode-se tentar a terceira solução.
3 – Podemos ainda, tentar uma terceira alternativa que é criar usuários idênticos nos 2 servidores. Não podemos dar garantias ao cliente de que isso resolverá o problema, mas vale a pena fazer o teste pois em muitos casos isso resolve o problema.
Como será feito o procedimento na terceira solução?
-
Na máquina em que a impressora está conectada fisicamente, criar um usuário local e dar permissão para esse usuário acessar a impressora – se necessário. Sugerimos o uso do nome: “nfe”;
- Na máquina em que o Motor ou Motor de Impressão está instalado, fazer o mesmo procedimento (criar um usuário local com o mesmo nome e a mesma senha);
- Fazer logon nesse servidor do Motor ou Motor de Impressão e instalar a impressora para esse usuário;
- Configurar o serviço para subir com esse usuário criado.
O que acontece nesse caso, é que o Motor de Impressão sobe com um usuário e senha. Quando ele envia a mensagem para o Spooler com essas credenciais, elas coincidem com as mesmas credenciais daquele usuário local, que também existe no servidor da impressora. Como essas credenciais são idênticas, a impressora deve aceitar a solicitação.
É importante que essas senhas não sejam alteradas no futuro. Deve-se orientar os responsáveis pela infraestrutura, pois alguns servidores possuem políticas para expiração de senhas.
Deve ser levado em conta que a disponibilidade das impressoras nos servidores é inteiramente responsabilidade da infraestrutura da empresa cliente. Caso nenhum dos procedimentos sugeridos seja corretiva, o departamento de infraestrutura deverá analisar o problema.
Referência
Sem referências