Gere PDF de qualidade em 10 minutos
Marcos Sousa | July 1, 2008O Seam Framework tem um grande leque de extras, na minha opinião é onde o Seam mais se destaca. Possui integração com Hibernate, Spring, Groovy, EJB, GWT, Quartz, Java Mail e por aí vai! Bom hoje vou falar um pouco do suporte do seam para integração do iText.
Basicamente para usar em um projeto Seam, basta adicionar a lib do itext e a lib de intregração jboss-seam.jar. Feito isto, basta criar páginas xhtml que use as tags de geração de arquivos PDF. Uma das opções que mais me chamaram a atenção foi a possibilidade de adicionar código html, algo que estava procurando para impressão de campos que usam o formato RichText. Outra coisa que me chamou a atenção foi a velocidade, um mesmo PDF que era gerado usando iReports levou um bom tempo a mais do que o gerando usando o Seam. As opções básicas como cabeçalho, rodapé e quebra de página estão presentes.
Tudo que é preciso fazer é criar uma página xhtml usando a tag p:document com o namespace http://jboss.com/products/seam/pdf:
<p :document xmlns:p="http://jboss.com/products/seam/pdf"> <!-- Coloque aqui o conteúdo do documento --> </p>
A tag de paragraph permite a criação de parágrafos de forma semelhante ao um documento HTML, para exibir um dado de uma EL JSF há três maneiras básicas: Colocar a EL direto no texto, usar o componente JSF padrão h:outputText ou ainda usar o componente do Seam p:text. Veja o exemplo:
<p :paragraph>
Olá #{user.name}, você foi registrado com sucesso, seu login é <h
utputText value="#{user.login}" /> e seu último acesso foi em: </p><p :text value="#{user.lastAcess}">
<f :convertDateTime pattern="dd/MM/yyyy HH:mm" />
</p>
E não podia deixar de destacar, também deixar de destacar a habilidade do Seam de renderizar código HTML através da tag p:html:
<p :html>
<h1>Título 1 em html</h1>
<table>
<th>
<td>Título 1</td>
<td>Título 2</td>
</th>
<tr>
<td>Linha 1</td>
<td>Linha 1</td>
</tr>
<tr>
<td>linha 2</td>
<td>Linha 2</td>
</tr>
</table>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</p>
Caso se interesse pelo assunto, sugiro acessar o Guia de Referência.





