Mostrando postagens com marcador Ireport. Mostrar todas as postagens
Mostrando postagens com marcador Ireport. Mostrar todas as postagens

segunda-feira, 11 de abril de 2011

Compilação de dicas Ireport

           Ultimamente venho trabalhando muito com relatórios feitos no Ireport (até mais do que eu gostaria) e como sei que é difícil conseguir boas dicas, resolvi fazer uma compilação de dicas aqui para quem passa por alguns “perrengues” com essa ferramenta.

  Passar uma lista como datasource de um subrelatorio

            Deve-se usar essa expressão no datasourceconection do subrelatorio new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{Lista}) 
           O field Lista é a lista de objetos que deseja que seja passado para o relatório.
           No subrelatorio se quizer pegar os atributos do objeto da lista é so declara-los como Field que o jasper vai fazer o papel de mapea-los para você.




         Na imagem acima tenho o meu field $F{servicos}  que é do tipo List

Não passar nenhum dado para o Subrelatorio e mesmo assim fazer com que ele abra


          Basta usar a seguinte expressão  new JREmptyDataSource(), com isso o relatório ira abrir sem precisar de  valor algum.


 Criar uma expressão para se verdadeira imprimir o relatório ou campo do relatório

          Se quiser que o relatório ou algum campo dele só imprima de acordo com alguma condição    basta colocar um teste booleano na propriedade print when expression                                                         
               Ex:  new Boolean($V{campoDouble}.doubleValue()>0) Nesse exemplo só sera impresso se o campo for maior que zero. A imagem abaixo ilustra esse exemplo:




  Passando um Mapa como parâmetro

         Declara-se um Field  do tipo Map 
         Ex: org.apache.commons.collections.map.HashedMap 
         Nesse exemplo usei HashedMap, mas poderia ter sido usado qualquer outro tipo de   mapa,no relatório que ira receber o Mapa como parâmetro será preciso declarar uma variável, seta-se o variable class com o caminho da classe que está sendo salva no mapa 
         Ex: com.meuprojeto.to.MinhaClasseTO 
         No variable expression coloca-se a chave que irá pegar o valor do mapa.
           
        Ex:$P{meuMap}.get($F{valorDaChaveMapa}), depois no Field do relatório é so pegar o valor assim: $V{minhaVariavel}.geMeuAtributo()


Passando uma lista de Strings para o subrelatorio


        Se quiser passar uma lista de Strings para um subrelatorio e recuperar os valores deverá declarar o field com a expressão $F{_THIS},  com isso conseguira recuperar os valores da lista.


 Criando um texto  que precise conter uma palavra em negrito no meio


         Se precisar inserir uma palavra em negrito no meio de um texto, como feito nessa frase, basta setar o Markup como styled e  usar a tag <style isBold="true"> No texto Negrito </style> como na imagem abaixo:

terça-feira, 8 de março de 2011

Criando Jar com as fontes do Jasperreports

Vou ensinar nesse post como criar um jar que contenham  as Fonts do jasper, evitando que eles fiquem espalhados na aplicação, com esse jar além de ser um meio mais elegante de ter as fonts no projeto, diminui também o tamanho do mesmo. Originalmente os fonts ficavam dispostos da seguinte maneira:


No caso precisava da fonte arial narrow para impressão em formato PDF, então era necessária a sua instalação na aplicação para ser reconhecida pelo jasper.

Primeira coisa que se deve fazer é instalar as fontes no Ireport, para isso vá em Ferramentas, depois Opções, irá abrir uma janela, clique na opção Font. Clique em instalar fonts, e escolha as que deseja utilizar na aplicação:

Após a instalação iremos criar o JAR para ser usado na aplicação. Clique no nome da font que acabou de criar e depois Export as extension, escolha o diretório que deseja salvar e pronto, está criado seu jar com as fonts necessarias para sua aplicação:

Pronto depois é só colocar o jar criado no Build Path da sua aplicação, como mencionei anteriormente essa solução é mais elegante pois não deixa as fonts soltas na pasta do projeto ela economiza espaço no meu exemplo o tamanho do projeto caiu em quase 2 megas com essa solução.