Exemplo de uso do plugin renderer
06/05/2015 23:01
0
Olá pessoal, alguém que já tenha utilizado o plugin renderer para conversão de páginas gsp em pdf, pode postar um exemplo aqui de como é essa implementação? Dei uma lida na documentação em http://gpc.github.io/grails-rendering/ mas é bem pobre e sem um exemplo completo, andei fazendo alguns testes aqui, mas estou esbarrando em problemas quando o plugin tenta resolver url´s como as referências de CSS, imagens, inclusive testei a declaração dos caminhos de várias formas, até com o caminho absoluto e ainda não deu certo. Vlw!
Tags: renderer, plugin, pdf


0
Oi Francisco,

já usei bastante o renderer. Se for pensar em geração de PDF, minha melhor sugestão é você usar media queries de impressão do CSS para gerar o PDF.
Assim, você configura a sua página para impressão e tudo o que o usuário precisa fazer para gerar o PDF é imprimi-la como arquivo neste formato pelo browser. Vai te evitar a inclusão de uma dependência a mais e muita dor de cabeça com este plug-in.


0
Olá Kico, poderia dar um exemplo utilizando media queries? Apesar de não ser muito bonito, acha que o CSS inline também pode resolver? Grato.
07/05/2015 09:50


0
Oi Francisco,

basta aplicar o CSS específico para impressão no final do seu arquivo CSS para que sobrescreva as regras padrão quando o usuário for imprimir. 
Mais detalhes neste link: https://developer.mozilla.org/pt-BR/docs/Web/Guide/CSS/CSS_Media_queries


1
Consegui resolver o problema referente à resolução do caminho do arquivo CSS, após algumas "googadas", no github do Renderer Plugin (https://github.com/gpc/grails-rendering/blob/master/src/docs/guide/3.%20Rendering.gdoc) lá no final da página é informado o comando abaixo para ativar o log e verificar o que o "plugin está fazendo".

grails -Dxr.util-logging.loggingEnabled=true run-app

Após executá-lo, identifiquei no log que ele realmente não conseguia resolver o caminho para o CSS, daí testei no template que estava utilizando para o PDF, a seguinte declaração:

<link type="text/css" href="${grailsApplication.config.grails.serverURL}/static/css/main.css" rel="stylesheet"/>

Após o teste, outro problema apareceu, foi acusado no log código HTTP 407 (bloqueado pelo proxy), removi as configurações de proxy do grails e bingo! Ele acessou o arquivo CSS, e gerou tudo corretamente (nem tudo, hehe, algumas declarações CSS ele diz não reconhecer, uma vez que o plugin é compatível com CSS 2.1), mas bastar ajustar e pronto!
Vlw Kico!
08/05/2015 10:41


0
Oi Francisco,

eu já usei muito este plug-in, mas com o tempo passei a desrecomendá-lo. Ele tem algumas limitações que são muito complicadas:

* Se seu HTML estiver mal formatado em qualquer ponto, ele vai dar um erro e é muito difícil descobrir aonde é (aliás, ele exige XHTML)
* Recursos estáticos que não estão no seu servidor costumam dar problema na hora de renderizar a resposta
* O que ele usa para renderizar o PDF por trás dos panos é um projeto chamado Flying Saucer (https://code.google.com/p/flying-saucer/) que é um renderizador HTML "headless" bastante limitado, então não dá pra tirar proveito de alguns recursos do CSS, por exemplo.
* Ele adiciona mais dependências no seu projeto

Por isto que te recomendo usar muito mais o CSS com media queries de impressão quando o assunto é PDF.
Quando o assunto é Excel, neste caso o que recomendo infelizmente é gerar na mão, pois todas as ferramentas que conheço geram arquivos muito ruins para o usuário que quer apenas editar alguns dados.


0
Olá Kico as suas observações a respeito deste plugin estão corretas, porém o projeto em questão que estou trabalhando tem algumas peculiaridades, é um software para terminal de autoatendimento, no seu primeiro post neste tópico onde você diz para utilizar media queries de impressão, daria certo se não fosse o fato de que neste projeto a impressão é direta, ela não abre a tela de opções para selecionar impressora, tipo de papel etc... (funcionamento padrão de terminais de autoatendimento), acredito que daria certo renderizando em tela o template e implementando a rotina de impressão neste padrão que falei, mas fiz alguns testes e não deu certo (se tiver alguma sugestão), o objetivo real de utilização do plugin não é gerar um pdf e sim unir o template e o conteúdo em uma variável que é passada para a rotina de impressão, o que agora deu certo. Vou continuar pesquisando alguma forma de evitar o uso do plugin. Vlw Kico!
08/05/2015 11:41


1
opa. É, neste caso acaba que o render vai ser melhor para você.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto