Marcos Sousa’s Blog

Blog sobre desenvolvimento de software
  • rss
  • Home
  • Sobre

Gere PDF de qualidade em 10 minutos

Marcos Sousa | July 1, 2008

O 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 :o 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.

Categories
Java, Java EE, Java Server Faces, Jboss Seam
Tags
Itext, Jboss Seam, jboss-seam-itext, JSF, PDF, Seam Framework, Seam PDF
Comments rss
Comments rss
Trackback
Trackback

« Off topic: Blog de cara nova Vídeo Aulas: Seam Extras partes 1 a 3 »

12 Responses to “Gere PDF de qualidade em 10 minutos”

  1. Diogo Maximo says:
    July 1, 2008 at 2:56 pm

    Valeu pela dica, estou precisando justamente disso, escrever código html em um PDF no JBoss Seam não sabia desse recurso, essa tag <p :html é a partir de qual versão do JBoss Seam? 2.0?
    Abraços.

    Reply
  2. marcossousa says:
    July 1, 2008 at 5:35 pm

    Sim,

    Este recurso é muito bom, algum tempo atrás eu tive um problema relacionado a este e a solução foi fazer uma classe que convertia HTML em conteúdos iText. Eu não tenho certeza mas acho que é a partir da versão 2.0.2.

    Reply
  3. Marcos Sousa’s Blog » Blog Archive » Vídeo Aula: Seam Extras - Gerando PDF says:
    July 31, 2008 at 10:11 am

    [...] Framework com o iText. Na vídeo aula, são apresentadas algumas das tags descritas na publicação Gere PDF de Qualidade em 10 minutos, o documento resultante gera um PDF que contém imagens, títulos, texto HTML formatado e um [...]

    Reply
  4. Marcos Sousa’s Blog » Blog Archive » Seam 2.1 released! says:
    October 23, 2008 at 11:22 am

    [...] Para quem gera documentos excel, tenho uma boa notícia, agora facilmente será possível criar documentos XLS utilizando um módulo específico do Seam para isto. Integrado ao JExcelAPI, o módulo possibilita gerar planilhas com um simples documento XHTML de maneira bem semelhante ao geração de PDF, que já abordada anteriomente. [...]

    Reply
  5. Rafael Borsato says:
    November 3, 2008 at 4:28 pm

    Boa tarde, estava lendo sua reportagem sobre o itext o qual estou utilizando para minha aplicação j2ee, mas estou com um problema que na montagem do relatorio não consigo colocar uma imagem no cabeçalho para a mesma aparecer em todas as paginas do relatorio..vc ja encontrou essa dificuldade ou tem alguma ideia de como resolver..abraços

    Reply
  6. Marcos Sousa says:
    November 7, 2008 at 10:33 pm

    Olá Rafael,

    Bom eu encontrei este mesmo problema, mas acho que na versão 2.1 do Seam ele está corrigido. Tente colocar a imagem dentro de um parágrafo que pode ajudar a corrigir seu problema

    Reply
  7. Marcos says:
    December 19, 2008 at 4:52 pm

    Marcos,

    Tenho uma rotina em background acontecendo e preciso gerar um relatório em pdf e salvar em uma pasta no meu SO. tem como eu fazer isso pelo seam?

    obrigado

    Reply
  8. Marcos Sousa says:
    December 19, 2008 at 10:42 pm

    Bom, acredito que seja possível, nunca testei, mas o caminho é usar a integração do Seam com Quartz e a partir daí usar da mesma forma que é realizado no processo padrão dentro da sua classe agendada.

    Reply
  9. Daniel says:
    April 9, 2009 at 5:15 pm

    Marcos,
    Estou com a mesma dúvida (post numero 7) do outro Marcos.
    Preciso gerar um pdf em background, já tenho o quartz funcionando, a unica coisa que preciso é chamar uma action e essa gerar e armazenar o pdf em disco.
    Você tem alguma dica de como posso fazer isso ?
    Abraço

    Reply
  10. Marcos Sousa says:
    April 18, 2009 at 12:08 am

    @Daniel,

    Por padrão não o Seam não possibilita, porém você pode fazer uma espécie de mock para a classe Renderer do Seam para você consiga gerar o PDF sem uma requisição.

    Sugiro você pegar código fonte e verificar se isto é viável. Qualquer dúvida não deixe de entrar em contato comigo.

    Reply
  11. Marcelo Nunes says:
    March 18, 2010 at 5:35 pm

    E possível fazer renderização condicional dentro de um relatório deste tipo? Não encontrei nada similar a propriedade ‘rendered’…

    Reply
  12. Jeferson says:
    November 11, 2010 at 1:19 pm

    Como faço para permitir que uma celula ou linha aumente de tamanho automaticamente.

    titulo

    #{nomeCampo}
    #{valorCampo}

    Reply

Leave a Reply

Click here to cancel reply.

Núvens de tags

Agile Eventos Facelets GET Hibernate incompatiblidades Itext Java Java EE Java Magazine Java Server Faces JavaServer Faces Java Vídeo Magazine Jboss jboss-seam-itext Jboss Developer Studio Jboss Seam JDBC type: 7 JPA JSF linux mare marébh maré de agilidade Microsoft No Dialect mapping for JDBC type: 7 Page Actions PostGreSQL RHDS rich:fileUpload RichFaces Rich Faces RichFaces 3.2 Scrum Seam-gen Seam Framework Seam PDF Spring Spring Framework TDD URL Rewrite URL User Friendly Variable Resolver Vídeo Aula XP

Meus últimos tweets

  • Aos participantes do Bhjs que gostariam de vir para a Globo.com, segue as outras vagas http://t.co/KjBinf4x #bhjs #beagajs 1 week ago
  • Se você precisa buscar dado no disco, prefira assíncrona @luciano #bhjs #beagajs http://t.co/5gCHp7P8 2 weeks ago
  • @DouglasAguiar @HerberthAmaral Porque na copa? 2 weeks ago
  • Slides da palestra 'Indo além com jQuery' #bhjs #beagajs http://t.co/wHbhaI75 2 weeks ago
  • @araujolucas na parte da frente a temperatura está melhor 2 weeks ago
  • Começando a palestra do @cmilfont no #bhjs #beagajs http://t.co/9DZt7MQj 2 weeks ago
  • @isaias_barroso @DeivissonBruno @cmilfont gula ao extremo:) 2 weeks ago
  • Palestra com insights do desenvolvimento do paparazzo #gcom #bhjs #beagajs http://t.co/7igVbtmS 2 weeks ago
  • @flavio1110 energético? 2 weeks ago
  • Alguém indo do Aeroporto de Confins para centro/guitierrez por voltar de 12:00 #bhjs #beagajs 2 weeks ago

Anúcios

Categorias

  • .net
  • Agile
  • Agile Conference 2009
  • Artigos
  • Atualidades
  • c++
  • cinema
  • Django
  • DRY
  • Eventos
  • Flex
  • Formula 1
  • Hibernate
  • IDE
  • Inutilidades
  • Java
  • Java EE
  • Java Server Faces
  • Jboss Seam
  • linux
  • Mac OS
  • Microsoft
  • Open-source
  • Palestras
  • Python
  • RAD
  • RIA
  • RichFaces
  • Scrum
  • Software Livre
  • Spring
  • Spring Annotations
  • TDD
  • Testes
  • Uncategorized
  • Vídeo Aulas

Links recomendados

  • AJ Soluções
  • Ary Júnior
  • Erko Bridee
  • Fragmental
  • Fragmental TW
  • Guilherme Chapiewski
  • Handerson Frota
  • Jeveaux
  • Juliano Carniel
  • Onipresente
  • Passes de Letra
  • PortalJava.com
  • Rafael Carneiro
  • Rafael Pontes

DevMedia Post’s

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox