Pessoal,
Estou com um problema muito capcioso…
Era uma vez uma nota fiscal que precisava ser imprimida num browser. O usuário iria passar as informações da nota numa página e receberia como resposta um preview da nota a ser impresso. Um botão imprimir mataria o problema, se não fosse dos seguintes problemas:
- A nota será impressa num formulário que já contém os título de campos e grades _ Esse problema foi resolvido com uso de muito CSS.
- A nota possui um posicionamento muito bem definido. _ Esse problema foi parcialmente resolvido com muito CSS. Isso depende da compatibilidade com os padrões W3C (CSS, HTML), não são garantidos nesse ambiente.
- Cada browser adiciona elementos especiais de impressão, como margem, cabeçalho e rodapé.
Devido ao problema 3, resolvi renderizar o html (na verdade o xhtml + css) com algum conversor para pdf.
Primeiro eu tentei xhtml = xslt => fo = FOP => pdf. Essa solução não deu muito certo devido a imaturidade do projeto FOP.
Nova tentativa: flying saucer + Request.include. Funcionou joinha para gerar o pdf.
Mas agora eu tenho o seguinte problema… Tenho um PDF e preciso imprimi-lo diretamente (nada de solicitar ao cliente que imprima o pdf pelo adobe). Já tentei a seguinte abordagem:
Adicionar um Javascript ao PDF através do itext, com comando de autoimpressão _ Não funcionou: o iText lançava um NullPointerException durante a criação do PDF gerado pelo flying saucer.
Estou pensando em outra abordagem, mas não sei como implementar:
Utilizar um applet e talvez um javascript para imprimir o documento gerado no servidor. Claro que não dá para (simplesmente) colocar um applet e abrir uma URLConnection, porque então eu teria que repetir toda conversão entre o cliente e o servidor (como autenticação, envio dos dados da nota fiscal, etc). Minha idéia é utilizar um serviço tipo ajax para obter o objeto pdf e enviar esse objeto para o applet imprimir. É possível? Alguém sabe como implementar?
Grato!