1
resposta

Impressão JAVA WEB

Tenho uma aplicação web JSF, que realiza impressão no cliente localmente.

Minha ideia é colocar essa aplicação em um servidor onde todos os clientes se conectam para uso da aplicação e envie as impressões remotamente.

Para que isso funcione eu já vi implementações JNLP no entanto eu vi isso funcionando localmente.

E também já vi abordagens utilizando a API, QZ Trail, que inclusive vi que funciona mas é um preço bem considerável. Para cada ano é 399 dólares.

Alguém poderia nos auxiliar na questão de qual abordagem seria interessante? O QZ sei que trabalha com java script, mas eu sou leigo no assunto de impressão com java script, alguém poderia nos ajudar no assunto nos dando um norte a seguir?

1 resposta

Oi Rafael,

vou te falar da minha experiência com isso aqui. Não sei se aplica pro que você precisa. Veja se encaixa e se faz sentido pra você e me fala :)

Os certificados que imprimimos pras pessoas que finalizam os cursos aqui da Caelum são impressos a partir de uma página do nosso sistema interno. E nossas apostilas são praticamente impressões de páginas de um site, também.

Nos dois casos, os sistemas são bem diferentes, um em Java com VRaptor o outro em bash e Node.js. A única coisa igual entre eles é que na parte da impressão podemos ser independentes da tecnologia porque os navegadores conseguem imprimir o que estiver na tela no momento que a pessoa apertar o botão pra imprimir.

Ou seja, basta o seus sistema ter trazido e montado o HTML quando a página foi carregada e a partir daí, se quiser customizar o visual do que vai ser impresso, basta estilizar com CSS.

No CSS para impressão, existem 2 coisas que eu acho bastante importante lembrar:

  • medidas em px vão se transformar em medidas reais
  • a página impressa tem um limite de altura que não existe na página no navegador

O que isso muda?

  • você pode usar unidades de medida para mídia impressa para ser mais preciso: cm ou pt
  • você pode/deve estilizar as margens e espaçamentos que devem ficar entre o que vai ser impresso e a margem da página/folha

Se tiver uma página que vai ser tanto usada no browser, quanto impressa, você pode querer ter alguns estilos específicos para impressoras. Pra isso você pode ter um bloco de CSS específico ora isso no seu arquivo .css:

/* aqui o css geral para o navegador e para impressão */
/* aqui mais css para o navegador  e para impressão  */

@media print {
    /*aqui o css específico para impressão */
}

Se quiser configurar o espaçamento da página/folha de papel:

@page {
    margin: 2cm
}