Stefan Horochovec
Possuo 20 anos de experiência no desenvolvimento de soluções web. Nos últimos 10 anos tenho atuado como Arquiteto de Soluções auxiliando empresas a desenvolver projetos para nuvem com um grande foco em Java EE como tecnologia voltada ao backend, Angular e React voltada ao frontend e Flutter voltado ao desenvolvimento móvel. Com relação a plataformas na nuvem, atuo com projetos consumindo serviços da AWS, Azure, e GCP.

Java e as impressoras matriciais

Ola pessoal, depois de dias e dias sem postar nada no blog, estou postando alguma coisa sobre Java dessa vez, especificamente sobre impressoras matriciais, aonde muitas pessoas, inclusive eu, já sofreram ou ainda sofrem, para fazer essa comunicação.

Qualquer aplicação que você for fazer via web, seja ela em html, php, java, asp, .net (ugh!), que necessite fazer impressões é um problema.

Relatórios são um sofrimento para quem vem do PHP (como eu). Tem que suar para fazer a implementação da FPDF ou da PDFlib, para geração de relatórios gráficos em PDF ou ainda tentar montar layouts via HTML que façam controle de páginas, cabeçalhos, rodapé, etc… ou seja, sofre mesmo.

Para quem está no Java (ufa!), pensa que vai se libertar disso tudo usando o Jasper com o iReport, que realmente ajuda MUITO na hora de gerar os relatórios, com opções de exportações, etc, realmente uma mão na roda, mas… Isso tudo ainda não está bom, existe a necessidade de impressão de documentos fiscais via web (Que ainda bem que vai acabar com a chegada nas NFe). E é ai que a coisa complica.

Pois é, usar as impressoras matriciais em um ambiente 100% web é um pouco complicado. Para que você possa imprimir em boa velocidade, é necessário enviar comandos em para impressora na sua linguagem, geralmente em padrão EPSON, de comandos para impressão em linhas e colunas, aonde voce atraves de caracteres ASCII define tipo de letra, fontes, avanço de papel, retorno, etc.

Há algum tempo eu tive essa necessidade de impressão de documentos fiscais. Depois de um pouco de pesquisas e troca de mensagens em foruns, optei por fazer a impressão através de um Applet.

O Applet em java, quando assinado pelo desenvolvedor e aceito pelo usuário (igual quando você aceita rodar o Applet do Banco do Brasil, por exemplo), pode acessar várias informações dentro do computador do usuário, inclusive esse tipo de periféricos. Dessa forma, é possivel que você acesse a impressora do usuário, ela estando conectada na maquina dele, ou ainda, ela estando conectada em alguma máquina da rede do usuário.

Depois desse teste de acesso, gastei um bom tempo criando uma classe que fizesse a leitura de um documento XML aonde qualquer aplicação que gerasse esse documento, e ativasse o applet para a leitura do mesmo, ele faria um parser, verificando as TAGs de mapeamento e de dados a serem impressos e o Applet enviaria os comandos para a impressora.

Depois disso funcionando no meu netbeans (na epoca eu ainda usava netbeans), eu tratei de descobrir como fazer a assinatura do Applet. Gerei minha chave e assinei o Applet usando o Jarsigner e pronto. Quando a aplicação chamou o Applet e passou o arquivo que ele deveria interpretar, a impressora foi ativada e a impressão começou.

Com o uso de applet’s, já foi possivel a criação de rotinas para impressão em impressoras matriciais, impressoras térmicas e leitores de biometria. O Applet é muito esquecido e um tanto quanto criticado quando você pensa em usá-lo, porém, apresenta resultados satisfatórios depois da implementação.

O próximo passo, é tentar fazer com que o Flex ative um applet! Mas como ando muito apurado, vou esperar essa situação ser obrigatória, dai eu penso em como fazer!

Abraços a todos!

Share

You may also like...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *