Boa pergunta... Também gostaria de saber como faz isso, é muito útil para alguns sistemas.
Vc pode fazer toda a formatação usando html e css em uma div com display:none e usar um window.print(); do javascript
Oi Gl3ydson,
há algumas alternativas para este problema: a mais fácil e que recomendo é usar CSS com media query de impressão. Isto por que hoje todos os browsers geram PDF a partir da impressão, tal como exposto pelo George Salu.
Se estiver usando uma versão anterior do Grails (2.x), existe o plug-in rendering, que faz exatamente isto, mas não recomendo seu uso, pois possuí algumas limitações:
* Requer que o HTML seja 100% bem formado (XHTML pra ser mais preciso)
* Se esta formatação estiver errada em algum ponto, a detecção do erro é muito difícil
* Ele é baseado em uma biblioteca chamada Flying Saucer, que é um browser headless baseado em Java. Ele funciona bem para uns 80% dos casos, mas dependendo do CSS que você escrever, ele não irá aparecer na impressão ou, ainda pior, será exposto de forma incorreta
Valeu pelas dicas, vou fazer isso mesmo.
é até mais prático na minha situação.
Eu, por outro lado, recomendo fortemente o plugin Rendering. Já fizemos coisas muito interessantes com ele. Algumas coisas deram um pouco mais de trabalho (o que é natural), mas no final das contas é algo que agiliza e muito o trabalho. Já fizemos desde formulários a cotações comercias com tabelas bem complexas. Tudo funcionou (e funciona) muito bem. Tentamos a abordagem do browser, usando o media query de impressão, mas não funcionou tão bem quando o plugin Rendering + Flying Saucer + iText.