Impressão em arquivo PDF
Nesse documento você encontra informações sobre:
Importante
É imprescindível que seja verificado o tópico que trata sobre o conceito de impressão via PrintService para entendimento do processo de impressão como um todo, e verificação dos pré-requisitos para que o processo seja executado com sucesso.
A rotina de impressão em PDF foi criada no sistema pois o componente PrintService pode mostrar incompatibilidade com alguns modelos de impressoras. Desta forma, esta rotina pode resolver diversas situações de impressão como, por exemplo: margem/rodapé/colunas nos arquivos auxiliares de documentos eletrônicos, problemas com as fontes na geração dos arquivos auxiliares.
Em um processo de impressão em PDF, o PrintService não se comunica diretamente com a Impressora. Com esta funcionalidade ativada, é possível definir que o PrintService irá:
- gerar o arquivo PDF do documento que teve a impressão solicitada diretamente em um diretório específico (em que o usuário pode optar por enviar o arquivo para impressão de forma manual); ou
- acionar um aplicativo de terceiros através de uma linha de comando, solicitando que este aplicativo de terceiros envie o arquivo para impressão na impressora; ou
- executar os dois processos acima indicados ao mesmo tempo.
A parametrização para ativar a rotina é efetuada a nível de filial e de PrintService. O Monitor e o serviço do eDocs conseguirão se comunicar com vários PrintServices, no entanto, se a filial estiver definida para utilizar a rotina de impressão em PDF, então o PrintService que recebe a requisição deve obrigatoriamente estar parametrizado para utilizar esta rotina, ou seja, deve estar parametrizado para gerar o arquivo PDF em um diretório, ou parametrizado para acionar um aplicativo de terceiros que tem a responsabilidade de enviar a solicitação de impressão para a impressora.
Na imagem presente no início deste tópico é possível identificar que foram definidos dois PrintServices. No entanto, o PrintService 1 está atendendo a filial 1, que está parametrizada para utilizar a impressão em PDF. O PrintService 2 está atendendo a filial 2, que está parametrizada para utilizar a rotina de impressão padrão. Neste cenário, as impressões são realizadas com sucesso, pois cada filial está utilizando um PrintService especifico.
Importante
A incorreta parametrização da rotina (exemplo: definir que uma Filial utiliza impressão em PDF e encaminhar uma solicitação de impressão para um PrintService que não está parametrizado para utilizar esta rotina) faz com que o PrintService não consiga interpretar a solicitação de impressão, e a impressão não é realizada.
A rotina de impressão em PDF pode ser utilizada em conjunto com as demais rotinas de impressão disponibilizadas pelo sistema (impressão em ambiente Cloud, impressão com filtros de impressão, impressão com seleção de impressora, ...).
A impressão em PDF é muito semelhante a rotina de impressão padrão, tendo como diferença apenas a possibilidade do PrintService gerar o arquivo PDF em um diretório ou solicitar a impressão do documento através de um aplicativo de terceiros.
Componentes do processo (levando em conta a utilização da rotina de impressão em PDF):
- Monitor: o Monitor pode efetuar comunicação diretamente com um ou mais PrintServices, para enviar requisições de impressão que são acionadas através do botão Imprimir. Quando o envio da impressão ao PrintService for efetuado com sucesso, o status do indicativo de impressão no Monitor (primeira coluna presente nas telas de monitoramento dos documentos eletrônicos) é atualizado para Documento eletrônico enviado para impressão ().
Importante
O Monitor disponibiliza eventos que auxiliam na identificação de falha no processo de impressão e solicitações de impressão automática, e registra eventos de impressão manual que ocorreram com sucesso.
- Serviço DE: é responsável por verificar os registros marcados na base de dados para serem impressos. A cada ciclo de execução da rotina, o eDocs envia os registros para o PrintService para que sejam impressos. Neste momento ele marca o status do indicativo de impressão no Monitor (primeira coluna presente nas telas de monitoramento dos documentos eletrônicos) como Documento eletrônico enviado para impressão ().
Importante
Existem outros status que podem ser definidos para a impressão dos documentos auxiliares: Falha, Impressão Não Realizada, Impressão pendente e Impressão em Contingência. Para mais informações sobre estes status, consulte o tópico específico de cada documento no Manual do usuário.
O Monitor e o serviço do eDocs encaminham uma requisição ao PrintService solicitando que o mesmo envie o documento para a impressora. No momento em que o Monitor ou o serviço do eDocs conseguem conexão com PrintService e enviam com sucesso esta requisição ao mesmo, o indicativo de impressão é atualizado no Monitor. No entanto, isso não garante que o documento tenha sido impresso, pois a impressão ainda depende do sucesso da comunicação do PrintService com o aplicativo de terceiros, ou, no caso de ser definida a geração do PDF em um diretório, o diretório deverá estar acessível e deverá permitir a gravação do arquivo.
- PrintService: é o componente responsável por receber as requisições de impressão enviadas pelo Monitor e pelo serviço do eDocs e encaminhar a impressão para o aplicativo de terceiros, ou gerar o arquivo PDF no diretório especificado. O PrintService possui uma fila própria (fila mantida em memória) e envia as requisições de impressão para o aplicativo de terceiros ou gerar os arquivos PDF nos diretórios em intervalos de execução pré-definidos.
- Aplicativo de terceiros: é o aplicativo que o PrintService acionará para encaminhar a solicitação de impressão. Este aplicativo é acionado através de uma linha de comando e ele tem a responsabilidade de encaminhar a impressão para a impressora. No caso do PrintService estar definido para gerar o PDF em um diretório específico, o aplicativo de terceiros não será acionado.
- Impressoras: são as impressoras que estão instaladas no sistema operacional Windows e estão disponíveis para receber a requisição de impressão encaminhada pelo aplicativo de terceiros.
Abaixo são indicadas as parametrizações necessárias para ativar a impressão em PDF.
Importante
Qualquer alteração de parametrização só terá efeito após o reinício dos serviços (eDocs e PrintService).
As parametrizações a serem efetuadas no Monitor são efetuadas na parametrização de cada filial e no tipo de documento emitido.
- Item Impressão, da guia Filial da tela Configuração de Filial
Ativar impressão em arquivo PDF
Este parâmetro deve estar definido como Sim. A partir do momento em que este parâmetro está definido como Sim para uma filial, todos os PrintServices que receberem requisições de impressão através desta filial devem estar obrigatoriamente parametrizados para utilizar esta rotina. Do contrário, as impressões deixarão de ser realizadas.
- Configuração > Filial > aba Filial > aba <Documento_Eletrônico> (onde <Documento_Eletrônico> é cada tipo de documento gerenciado pelo DE – NF-e, NFS-e, CT-e, MDF-e, NFC-e, CF-e).Para exemplificar a parametrização, é utilizado como exemplo a parametrização para NF-e (guia NF-e).
DANFE automático
Define se será impresso o DANFE da NF-e automaticamente após a NF-e ter sido autorizada (em ambiente normal ou em contingência). Caso o parâmetro seja definido como Não, as impressões devem ser solicitadas através do botão Imprimir;
URL serviço de impressão
Neste campo deve ser definida a URL para comunicação do serviço do eDocs e do Monitor com o PrintService que é utilizado por padrão pela filial para impressão de NF-e. A URL deve estar no formato endereço:porta, sem definição de protocolo http na frente. Exemplo: SERVBNU:1024. Por padrão, este campo é inicializado como localhost:1024. Neste caso, leva-se em consideração que o PrintService estaria instalado no mesmo computador que o Monitor e o serviço do eDocs (por isso o endereço localhost), e estaria utilizando a porta 1024. O endereço poderá ser substituído pelo IP do servidor, desde que haja garantia da comunicação e de que o IP não é dinâmico.
Template
Para definir qual será o template utilizado na geração dos documentos auxiliares (tanto na geração do PDF para ser efetuado o download pelo Monitor, quanto na geração do PDF que será enviado ao PrintService ou enviado por e-mail), basta acessar Configurações > Filiais > selecionar a aba Documento Eletrônico desejado (NF-e, NFS-e, CT-e, MDF-e, NFC-e, CF-e ou GNRE) > Impressão > Campo Templates > Configurar.
Dica
Campos a serem parametrizados para impressão de outros tipos de documento (NFS-e, CT-e, MDF-e, NFC-e, CF-e) podem ser consultadas no Manual do usuário de cada uma das telas. No entanto, os conceitos de comunicação com PrintService e definição de templates são padrões para todos os tipos de documento.
Importante
Para que a rotina de impressão em PDF funcione corretamente é necessário que o PrintService esteja parametrizado com usuário administrador da rede/domínio/servidor, caso contrário a rotina não irá funcionar.
A configuração do usuário e senha para instanciar o PrintService não se dá pelo Configurador. Deve ser utilizado o console de administração dos serviços do Windows para efetuar este processo. O processo deve ser executado em todos os PrintServices utilizados.
As parametrizações são efetuadas no Configurador (Configurador da instância que possui o componente PrintService instalado). As parametrizações são efetuadas na guia Print Service do Configurador:
- Impressora Local: deve ser definida a impressora padrão do PrintService. Em um ambiente onde não serão utilizados filtros de impressão, todas as requisições de impressão recebidas por este PrintService serão enviadas para esta impressora.
Observação
O campo é definido como Impressora local porque, apesar de ser possível enviar a impressão para uma impressora de rede, ela deverá estar instalada no sistema operacional Windows onde o PrintService foi instalado.
- Porta: neste campo é definido o número da Porta em que o serviço do PrintService recebe as requisições no computador/servidor onde ele está instalado. A Porta deve estar liberada para comunicação externa por eventual Firewall ou Antivirus, e nenhum outro aplicativo poderá utilizar esta porta. A porta padrão é 1024.
- Guia Impressão em PDF: nesta guia estão disponibilizadas parametrizações para ativar a rotina de impressão em PDF.
Diretório de saída dos arquivos PDF: campo que deve ser definido caso deseja-se gerar os arquivos PDF em um diretório específico. Este diretório deve estar acessível através do computador/servidor onde o PrintService está sendo executado. O diretório deve estar definido para acesso total ao usuário que instancia o serviço do PrintService.
Comando para impressão dos arquivos PDF: campo que deve ser definido caso deseja-se enviar a impressão para a impressora através do acionamento de um aplicativo de terceiros. Para informações específicas de como montar a linha de comando para preenchimento deste campo, consulte o tópico Comando para impressão dos arquivos PDF.
Importante
Os campos Diretório de saída dos arquivos PDF e Comando para impressão dos arquivos PDF podem estar definidos ao mesmo tempo:
- se o objetivo é salvar o arquivo PDF em determinado diretório, o campo Diretório de saída dos arquivos PDF deve estar preenchido e o campo Comando para impressão dos arquivos PDF deve estar em branco;
- se o objetivo é enviar os arquivos para impressão através de um aplicativo de terceiros, então o campo Comando para impressão dos arquivos PDF deve estar preenchido, e o campo Diretório de saída dos arquivos PDF estar em branco.
- se os dois parâmetros acima forem definidos ao mesmo tempo, o PrintService salva o arquivo PDF no diretório definido, e aciona o aplicativo de terceiros para impressão do arquivo gerado anteriormente no diretório definido.
Outros campos disponíveis para parametrização do PrintService se referem a outras formas de impressão ou configurações adicionais e não serão tratadas neste tópico.
O campo Comando para impressão dos arquivos PDF, da guia Print Service > Impressão em PDF do Configurador, deve ser preenchido com a linha de comando para acionar o aplicativo de terceiros que enviará o arquivo para a impressão.
A construção desta linha de comando leva em conta quatro informações:
- local onde o executável do aplicativo está disponibilizado;
- parâmetro para indicar que o aplicativo de terceiros deverá efetuar a impressão;
- variável que será convertida com o nome da impressora onde o usuário solicitou impressão (seja de forma manual ou de forma automática);
- variável que será convertida com o nome do arquivo que será enviado para impressão pelo aplicativo de terceiros.
Desta forma, a linha de comando ficará no seguinte padrão: <Local_do_Executável_do_Aplicativo><Parâmetros_de_Impressão_do_Aplicativo>[NOME_ARQUIVO][NOME_IMPRESSORA]
As variáveis [NOME_ARQUIVO] e [NOME_IMPRESSORA] serão substituídas pelo PrintService, em tempo de execução do processo, pelo nome do arquivo que será enviado para impressão e pelo nome da impressora que o usuário selecionou para ser impresso.
Importante
O único aplicativo de terceiros homologado pela Senior para utilização nesta rotina é o aplicativo Foxit Reader na versão 4.0.0.619. Por este motivo, o exemplo de utilização da rotina e criação da linha de comando é baseada neste aplicativo.
Este aplicativo pode ser baixado pelo Portal do Cliente Senior acessando o caminho Central de Sistemas > Atualização de ambiente > SDE > Ferramentas.zip. Para mais informações sobre como criar seu usuário, senha e realizar o primeiro acesso ao Portal do Cliente, acesse o Portal de Documentação Senior e siga as instruções recomendadas.
É indicada a definição do caminho e das variáveis entre aspas (""), pois quando algum caminho possuir espaço, a interpretação do comando pelo Windows exige a utilização de aspas.
Exemplo de linha de comando para utilização do aplicativo FoxitReader: “C:\FoxitReader\FoxitReader.exe” /t “[NOME_ARQUIVO]” “[NOME_IMPRESSORA]”
No exemplo utilizado acima, o PrintService irá acionar o aplicativo FoxitReader.exe que está disponibilizado na pasta C:\FoxitReader do computador onde o PrintService está instalado, passando o parâmetro /t (parâmetro que indica impressão do arquivo), indicando a impressão do arquivo repassado pelo Monitor ou serviço do eDocs na impressora escolhida pelo usuário no Monitor (ou conforme parametrizações de impressão da filial).
Dicas
Para verificar todos os parâmetros que podem ser utilizados juntamente com o aplicativo FoxtiReader, basta executar o seguinte comando no Prompt de comando do Windows (cmd.exe): C:\FoxitReader\FoxitReader.exe /?. Neste exemplo, leva-se em consideração que o aplicativo está disponibilizado no diretório C:\FoxitReader. Se necessário, adaptar o comando ao ambiente onde ele será executado.
Para identificar se a linha de comando está correta, poderá ser efetuado teste de impressão acionando a linha de comando pelo Prompt de Comando do Windows (cmd.exe). Neste teste, as variáveis [NOME_ARQUIVO] e [NOME_IMPRESSORA] devem ser substituídas pelo local onde um arquivo PDF está armazenado e pelo nome da impressora que irá receber a solicitação de impressão. Se através deste teste a impressão não for executada, a impressão através do PrintService também não será executada. Neste caso, será necessário identificar o motivo pelo qual a impressão não ocorreu (Exemplo: linha de comando definida de forma errada, parâmetros de impressão não suportados pelo aplicativo de terceiros, etc.).
Abaixo são indicadas as parametrizações adicionais que poderão ser efetuadas com base em necessidades específicas de cada ambiente:
- Intervalo entre impressões (em milissegundos): indica ao PrintService quanto tempo deve aguardar entre as impressões. Em alguns casos, para que a impressora siga corretamente a ordem de impressão é necessário esse intervalo entre as impressões. O padrão desse campo é 0 (zero) e cada ambiente pode apresentar diferenças que influenciem no valor a ser atribuído, porém a recomendação é sempre informar o valor mais próximo de zero possível. O tempo informado deve estar em milissegundos, ou seja, se você quer inserir uma pausa de 1 segundo deve informar 1000. Para uma pausa de meio segundo, devo informar 500. Este parâmetro é utilizado em conjunto com o parâmetro Quantidade de processamentos paralelos para impressão da tela Configuração de Filial.
Observação
Informações sobre impressão em arquivo PDF, impressão em Cloud e funcionalidade de seleção de impressora serão tratados em tópicos específicos.
- Item Impressão, da guia Filial da tela Configuração de Filial
Quantidade de processamentos paralelos para impressão: indica quantas impressões paralelas serão executadas. Por padrão, este campo virá preenchido com 5. Quando este campo estiver parametrizado com um valor maior que 1, a impressão dos documentos eletrônicos não é impressa em ordem numérica, pois as impressões ocorrem paralelamente. Para que os documentos eletrônicos sejam impressos em ordem, este campo deve ser parametrizado com 1 e o campo Intervalo entre impressões (em milissegundos), da guia Print Service do Configurador, deve estar configurado de acordo com o ambiente, porém neste caso a impressão dos documentos pode levar mais tempo. Este parâmetro influencia tanto no processo de impressão quanto no processo de reimpressão.
Importante
Esse parâmetro permite ligar ou desligar o paralelismo no momento de enviar as impressões ao PrintService, que posteriormente faz o envio ao sistema operacional e à impressora. O fato de o paralelismo estar desligado faz com o que o eDocs busque os documentos (em situação de impressão no momento) ordenados pelo número da nota, porém não temos como garantir que essa mesma ordenação será respeitada pelo sistema operacional e driver da impressora.
Quantidade de tentativas de impressão (apenas comunicação): indica quantas tentativas são realizadas de envio da impressão ao PrintService (tentativa de comunicação a partir do serviço eDocs – não aplicado a impressão manual via Monitor). Após ultrapassar a quantidade de tentativas, onde não tenha havido sucesso na comunicação, o sistema marca a impressão como Falha. Caso seja informado o valor 0 (zero) neste campo, o sistema tenta recorrentemente realizar o envio e não marca como Falha. O valor padrão deste campo é 0 (zero), no entanto, é indicado definir um limite de tentativas, pois em eventual problema no processo de impressão, pode ocorrer sobrecarga no servidor do serviço do eDocs, pois o serviço tenta infinitamente enviar documentos pendentes para a impressão.
Observação
Informações sobre utilização de filtros de impressão e diretórios extras de integração serão tratadas em tópicos específicos.
Verificando a imagem do processo presente no início deste documento, é possível perceber de que o Monitor e o serviço do eDocs se comunicam diretamente com o PrintService para enviar uma solicitação de impressão. Desta forma, a primeira verificação a ser realizada é descobrir se a comunicação entre os componentes está ocorrendo corretamente.
Observação
Para exemplificar as verificações a serem realizadas, será utilizado como base a impressão de DANFE de uma NF-e. No entanto, as verificações valem para outros tipos de documentos cujas impressões são realizadas pelo eDocs.
Quando houve a comunicação do com o PrintService e tenha sido enviada a requisição de impressão ao PrintService corretamente, o registro é marcado como Documento eletrônico enviado para impressão () (ou o equivalente para impressão em contingência ). Na imagem abaixo é possível verificar este indicativo em destaque na coluna D.
Se a comunicação com o PrintService não tenha sido realizada com sucesso, o registro ficará como Pendente de impressão (), caso o campo Quantidade de tentativas de impressão (apenas comunicação) esteja definido como 0 (zero), ou como Falha de impressão (), caso o parâmetro Quantidade de tentativas de impressão (apenas comunicação) esteja definido com um valor maior que 0 (zero), e todas as tentativas de comunicação já tenham sido esgotadas.
Eventuais erros de comunicação entre o serviço do DE e o PrintService para processo de reimpressão ou impressão automática, estarão registrados no log, indicando problemas de impressão do documento.
Importante
Documentos que não foram autorizados, não são enviados para impressão. Portanto, a análise não pode se basear em um documento que ainda não tenha sido autorizado.
Em um processo de impressão manual, caso o indicativo de impressão já esteja como Documento eletrônico enviado para impressão (), uma eventual falha no processo de impressão manual não alterará a situação da impressão do documento, permanecendo ele com o status de Documento eletrônico enviado para impressão ().
O botão Imprimir, presente no Monitor, faz com que o Monitor envie uma requisição de impressão diretamente para o PrintService. Para confirmar a comunicação com o PrintService, pode ser solicitada a impressão através do botão Imprimir.
Caso ocorra um erro de comunicação do Monitor com o PrintService, é gerada uma mensagem ao usuário indicando que não foi possível enviar o documento para impressão (Exemplo: Não foi possível imprimir a NFe número 302205 (sequência 1749). Verifique o arquivo de log para maiores informações.). Neste caso, o motivo de não ter havido a comunicação será registrado no log.
Se a comunicação com o PrintService não ocorra com sucesso:
- Verifique se o PrintService escolhido na tela de seleção de impressora está iniciado.
Para verificar se o serviço do PrintService está iniciado, pode ser utilizado o Configurador ou o Console de Serviços do Windows (services.msc). No console, o nome do serviço é Senior Documentos Eletrônicos PrintService - <Instância_Instalação> (onde <Instância_Instalação> é o nome dado a instalação no momento que o sistema foi instalado).
No Log do PrintService também é possível identificar se ele foi iniciado com sucesso. Se a inicialização ocorreu com sucesso, será possível encontrar este trecho no log (data e hora irão variar de acordo com a data e hora de inicialização do serviço):
2016-06-15 13:41:17,332 [5] WARN Senior.SapiensNfe.Processos.Sistema.Aplicacao - Aplicação inicializada
2016-06-15 13:41:17,999 [5] WARN Senior.SapiensNfe.Processos.Service.Impressao.ImpressaoControlador - Serviço escutando no endereço: net.tcp://servidor:1024/Impressao.
2016-06-15 13:41:18,089 [5] WARN Senior.SapiensNfe.PrintServer.MainService - Serviço iniciado
Onde:
servidor: é o nome do servidor onde o PrintService está instalado;
1024: é a porta parametrizada no Configurador (porta que o PrintService utilizará para receber requisições).
Importante
Para garantir de que seja verificado o Log atual do PrintService, convém parar o serviço do PrintService, para então efetuar a limpeza dos Logs do PrintService (logs antigos), e somente então iniciar o PrintService novamente, para somente então verificar no Log se ele foi iniciado com sucesso.
- Verifique se o PrintService está respondendo
Um teste simples que pode ser efetuado para garantir que o PrintService esteja respondendo as requisições, é executar uma conexão telnet ao PrintService.
Se tivermos como exemplo um PrintService sendo executado na porta 1024 de um servidor que tenha o nome de PCBNU00006, nosso comando telnet será: telnet PCBNU00006 1024. O comando pode ser executado a partir do Prompt de Comando do Windows (cmd.exe).
Abaixo segue imagem de exemplo do resultado do teste quando há um problema de comunicação com o PrintService:
Abaixo segue imagem de exemplo do resultado do teste quando a conexão com o PrintService foi realizada com sucesso:
É possível notar que, quando a comunicação é estabelecida com sucesso, o retorno do teste em telnet será a tela sem nenhuma mensagem, apenas com um cursor piscando no canto superior esquerdo.
Importante
Para efetuar uma conexão telnet, é necessário que o componente Telnet esteja instalado no Windows. Caso o componente não esteja instalado, verifique junto ao responsável pela TI a instalação do componente.
O teste via telnet também pode ser utilizado para garantir a comunicação com o PrintService que esteja sendo executado em um computador/servidor diferente do computador/servidor onde o Monitor ou o Serviço do eDocs estão instalados. Neste caso, a partir do comutador/servidor onde o serviço do eDocs esteja instalado (Exemplo: SERVIDORSENIOR) é executada uma conexão telnet apontando para o computador/servidor onde o PrintService está instalado (Exemplo: SERVIDORIMPRESSAO). A porta do PrintService é a 1024. O comando telnet será executado a partir do servidor SERVIDORSENIOR com a seguinte sintaxe telnet SERVIDORIMPRESSAO 1024.
- Verifique se a parametrização do PrintService está correta no Monitor (endereço e porta) para a filial que está solicitando impressão.
Em casos em que o serviço PrintService estiver respondendo corretamente (inclusive no teste via telnet), mas ao ser solicitada a impressão pelo Monitor seja gerada mensagem de erro de comunicação, é necessário identificar as parametrizações presentes no Monitor para comunicação da filial com o PrintService, pois elas devem estar incorretas (Exemplo: apontando para a porta errada do PrintService). Detalhes sobre a parametrização podem ser verificados em tópicos anteriores desta documentação.
Conforme informado no tópico Avaliar se a comunicação com o PrintService ocorreu com sucesso, quando houve a comunicação do Monitor ou serviço do eDocs com o PrintService e tenha sido enviada a requisição de impressão ao PrintService corretamente, o registro é marcado como Documento eletrônico enviado para impressão ().
A partir deste momento a responsabilidade de enviar a impressão para a impressora é do serviço do PrintService.
Eventuais erros de envio da impressão a partir do PrintService para o aplicativo de terceiros ou geração do arquivo em diretório serão registrados no log. Quando o nível de log definido no PrintService for WARN, só serão registradas mensagens da inicialização do serviço do PrintService ou mensagens de erro da execução da rotina de impressão.
Muitos erros ocorrem porque, no momento em que o PrintService se comunica com o aplicativo de terceiros, ele não está disponível no local definido, ou no momento da geração do arquivo PDF em um diretório, o diretório não está acessível. Neste caso, no Log será possível encontrar uma mensagem de erro indicando este problema.
Para um maior detalhamento dos processos executados pelo PrintService, é necessário alterar o nível de log do mesmo para DEBUG (alteração efetuada através do Configurador). A partir desta alteração, é possível identificar detalhes nos processos executados pelo componente PrintService.
Tendo em vista o processo de impressão como um todo, para comprovar de que o PrintService está enviando corretamente a requisição de impressão para o aplicativo de terceiros ou solicitando a geração do arquivo PDF em um diretório, podem ser adotados os procedimentos abaixo:
- Defina o nível do log do PrintService como Debug.
Antes de definir o log como DEBUG, convém efetuar a limpeza dos logs, para garantir que os logs a serem avaliados são atuais. Para isso, o serviço do PrintService deve estar parado. Lembrando que a alteração do log é efetuada pelo Configurador e só terá efeito após a reinicialização do serviço do PrintService.
- Coloque a impressora que irá receber a impressão em Pausa;
Este processo é executado através do console de administração de impressoras do Windows do computador/servidor onde o PrintService está instalado. Para isso, acesse o menu Impressora do console e selecione a opção Pausar Impressora.
Importante
O processo para Pausar Impressão poderá variar de acordo com a versão do Windows utilizada. Da mesma forma, permissões de ambiente poderão bloquear o processo de pausa de uma impressora. Para estas situações, o administrador de TI deverá ser acionado para apoiar a execução do processo.
- Solicite a impressão de um documento pelo Monitor do sistema
Neste caso, tem-se como pré-requisito que a comunicação do Monitor com o PrintService está ocorrendo corretamente. Caso contrário, é necessário avaliar as informações presentes no tópico Avaliar se a comunicação com o PrintService ocorreu com sucesso deste documento.
A solicitação de impressão ocorre através do acionamento do botão Imprimir das telas do Monitor. Para exemplificar o processo, utilizaremos a solicitação de impressão de um DANFE de NF-e através da guia Notas Fiscais da tela de emissão de NF-e.
Ao solicitar a impressão, o Monitor retorna a mensagem Documento eletrônico enviado para impressão.
Para exemplificar o processo, teremos como exemplo a solicitação de impressão do DANFE da NF-e número 302167 (chave: 42151280680093000181553290003021671227036836).
- Verifique os registros no Log
No Log é possível encontrar as seguintes informações, conforme imagem abaixo
No trecho destacado em vermelho, é possível identificar a inicialização do processo de impressão pelo PrintService, no entanto, neste momento (às 09:50:35), o PrintService ainda não possuía nenhum arquivo pendente em sua fila para encaminhar a impressão para impressora.
No trecho destacado em verde, é possível identificar uma nova a inicialização do processo de impressão pelo PrintService (o processo é executado a cada 30 segundos, por padrão), no entanto, neste momento o PrintService já possui a solicitação de impressão do DANFE da NF-e 302167 em sua fila. Com isso, é possível identificar no trecho destacado em azul que foi acionado comando externo para a impressão. Este comando é efetivamente o comando parametrizado no Configurador (de acordo com o tópico Comando para impressão dos arquivos PDF). Através do log é possível identificar que o PrintService substituiu as variáveis [NOME_ARQUIVO] e [NOME_IMPRESSORA] pelo diretório temporário onde o Windows armazenou o arquivo e pela impressora definida para impressão (Brother DPC-116C).
Importante
Em ambientes onde há restrições de acesso aos recursos de rede e de infraestrutura, no Log em modo DEBUG pode ser possível identificar que o envio da impressão ao aplicativo de terceiros foi encaminhado, no entanto, a impressão não chega até a impressora. Nestas situações, é necessário verificar as credenciais definidas para instanciar o serviço do PrintService.
- Acompanhe o acionamento do aplicativo no Gerenciador de Tarefas do Windows
A partir do momento em que o PrintService acionou o comando de impressão, o aplicativo de terceiros deve ser iniciado para que o mesmo realize a impressão do arquivo. Desta forma, é possível acompanhar a execução do aplicativo a partir do Gerenciador de Tarefas do computador onde o aplicativo está instalado.
No caso do exemplo que estamos utilizando, trata-se do aplicativo FoxitReader. Abaixo segue exemplo do aplicativo registrado no Gerenciador de Tarefas:
Observação
Em muitas ocasiões, o aplicativo de terceiros é acionado pelo PrintService e encaminha rapidamente o arquivo para impressão. Nestes casos, o processo FoxitReader.exe fica registrado no Gerenciador de Tarefas em um período menor que 1 segundo.
- Consulte o console da Impressora para verificar as impressões pendentes.
Ao verificar o console da Impressora (O que está sendo impresso), é possível identificar que a solicitação de impressão chegou à impressora (pelo menos no Spooler de impressão do Windows). Conforme imagem abaixo:
Quando temos o registro da solicitação de impressão no console da impressora, temos a garantia de que todo o processo executado pelo eDocs está correto, sendo de inteira responsabilidade do sistema operacional Windows e da infraestrutura do cliente garantir que o documento seja efetivamente impresso na impressora. Caso não seja identificada a solicitação de impressão no console da impressora, é necessário avaliar em qual ponto da comunicação Monitor/Serviço de eDocs > PrintService > Impressora está ocorrendo o problema, com base nos procedimentos indicados anteriormente neste documento.
Observação
O nome do arquivo enviado para a impressora, no caso de uma impressão em PDF, é um nome de arquivo temporário.
- Defina o nível do log do PrintService como Debug;
Antes de definir o log como DEBUG, convém efetuar a limpeza dos logs, para garantir que os logs a serem avaliados serão logs atuais. Para isso, o serviço do PrintService deve estar parado. Lembrando que a alteração do log é efetuada pelo Configurador e só tem efeito após a reinicialização do serviço do PrintService.
- Solicite a impressão de um documento pelo Monitor do sistema
Neste caso, tem-se como pré-requisito que a comunicação do Monitor com o PrintService está ocorrendo corretamente. Caso contrário, é necessário avaliar as informações presentes no tópico Avaliar se a comunicação com o PrintService ocorreu com sucesso presente neste arquivo de ajuda.
A solicitação de impressão ocorre através do botão Imprimir das telas do Monitor. Para exemplificar o processo, utilizaremos a solicitação de impressão de um DANFE de NF-e através da tela Emissão de NF-e.
Ao solicitar a impressão, o Monitor retorna a mensagem Documento eletrônico enviado para impressão.
Para exemplificar o processo, teremos como exemplo a solicitação de impressão do DANFE da NF-e número 302167 (chave: 42151280680093000181553290003021671227036836).
- Verifique os registros no Log “PrintService.log”
No Log PrintService.log é possível encontrar as seguintes informações, conforme imagem abaixo
No trecho destacado em vermelho, é possível identificar a inicialização do processo de impressão pelo PrintService, no entanto, neste momento (às 14:08:36), o PrintService ainda não possuía nenhum arquivo pendente em sua fila para encaminhar a impressão para impressora.
No trecho destacado em verde, é possível identificar uma nova a inicialização do processo de impressão pelo PrintService (o processo é executado a cada 30 segundos, por padrão), no entanto, neste momento o PrintService já possui a solicitação de impressão do DANFE da NF-e 302167 em sua fila. Com isso, é possível identificar no trecho destacado em azul que foi acionado o processo de impressão em arquivo (texto Imprimindo em arquivo) e, logo após, é indicado o diretório e o nome do arquivo gerado.
Importante
Em ambientes onde há restrições de acesso aos recursos de rede e de infraestrutura, no Log poderá ser possível identificar a geração do arquivo no diretório definido, no entanto, o arquivo pode não ser criado neste diretório. Nestas situações, é necessário verificar as credenciais definidas para instanciar o serviço do PrintService.
- Verifique a geração do arquivo PDF no diretório parametrizado no PrintService
A partir do momento em que o PrintService gerou o arquivo PDF no diretório definida, é possível verificar o arquivo PDF dentro do diretório definido, conforme imagem abaixo: