Base de conhecimento

Falha na impressão automática: Invalid name of PrintService - Como resolver?

4 minutos de leitura
Copiar

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;

Observação

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”;

  1. 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);
  2. Fazer logon nesse servidor do Motor ou Motor de Impressão e instalar a impressora para esse usuário;
  3. 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.

Observaçã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

Não encontrou o que procurava?