mar 15 2016

Gerando relatórios JasperReports com fontes personalizadas utilizando o Jaspersoft® Studio

Category: Inicio,JasperReports,Jaspersoft StudioEdson Gonçalves @ 19:48

Olá Pessoal, tudo bom? Como vão vocês?

Em 2011 eu fiz um Post sobre um problema comum a muitos desenvolvedores sobre embeber uma fonte personalizada em relatórios JasperReports.

Agora, vamos usar o Jaspersoft® Studio para realizar a mesma tarefa.

Para acompanhar este artigo

Criei um banco de dados simples, com uma tabela chamada produtos, contendo os campos selecionados como mostra a Figura 1.

Figura 1 – A tabela usada

Figura 1 – A tabela usada

O relatório foi criado usando o assistente do Jaspersoft® Studio, onde o resultado final, após minhas pequenas alterações, é o que mostra a Figura 2.

Figura 2 – Relatório gerado pelo assistente com pequenas modificações

Tenham em mente que este artigo não vai ensiná-los a criar relatórios e sim como contornar um problema comum entre os desenvolvedores Java.  Farei posts adiante sobre como criar relatórios com Jaspersoft® Studio.

Trabalhando com fontes personalizadas no relatório

Após desenhar o relatório, chega o momento de finalizar a “arte” com alguns toques e, em meio as mudanças, eis que surge a ideia de personalizar a fonte também do texto contido no relatório.

No exemplo que fiz, os textos fixos foram todos personalizados com uma fonte que possuo em minha máquina, chamada Impact.

Embora esta fonte seja importante para o design do meu relatório, não tenho garantias que ela exista no servidor onde hospedo meus aplicativos.  Logo, o que parece simples, pode se tornar um pesadelo se não for eu o responsável pela administração do sistema operacional.

Adicionando a fonte ao aplicativo

Graças ao problema de ausência de fontes em servidores de hospedagem, muitos desenvolvedores não podiam depender da empresa ou administrador que fornece a máquina onde disponibilizam se encontram aplicativos, principalmente quando se trata de uma hospedagem compartilhada.  É nisto que o JasperReports inclui a  possibilidade de ter todas as fontes que usou em seu relatório em produção.

Adicionando e exportando a fonte no Jaspersoft® Studio

Vá no menu  Window > Preferences (menu Jasper Studio >Preferences no Mac OS X) e, na digite Fonts, na parte superior de pesquisa. Clique em Jaspersoft Studio>Fonts.

Figura 3 – Preferências do Jaspersoft® Studio

Figura 3 – Preferências do Jaspersoft® Studio

Através do botão Add selecionamos as fontes que desejamos importar no Jaspersoft® Studio.

Figura 4 – A fonte escolhida e usada no relatório pronta para ser exportada

Figura 4 – A fonte escolhida e usada no relatório pronta para ser exportada

Depois de importadas, podemos selecionar todas elas e exportá-las através do botão Export.

Figura 5 – Selecionando as fontes para serem exportadas

Figura 5 – Selecionando as fontes para serem exportadas

No exemplo que explico, chamei o arquivo que exportei de font.jar. É justamente este arquivo que vou adicionar em meu projeto, seja usando o Maven, no Eclipse IDE ou NetBeans IDE.

A fonte como uma biblioteca no seu aplicativo Web pelo Eclipse IDE

No Eclipse, basta clicar com o direito do mouse sobre o projeto, selecionar o item Properties. Na caixa de diálogo Properties, vamos em Java Build Path, na aba Libraries. Para adicionarmos a biblioteca font.jar, vamos no botão Add External JARs.

Figura 5 – O JAR font.jar adicionado nas bibliotecas do meu projeto

Figura 5 – O JAR font.jar adicionado nas bibliotecas do meu projeto

Para projetos Java EE no Eclipse IDE, adicione as bibliotecas do projeto no aplicativo Web. Este item está na janela Properties, em  Deployment Assembly. É neste local que determinamos quais bibliotecas serão exportadas ao executarmos o servidor Java.

Figura 6 – Adicionando os arquivos JARs do projeto no aplicativo Web

Figura 6 – Adicionando os arquivos JARs do projeto no aplicativo Web

Siga os passos informados a seguir para adicionar as bibliotecas:

1. Clique no botão Add, a caixa de diálogo New Assembly Directive surge. Esta caixa de diálogo é a responsável por selecionarmos as bibliotecas do projeto em Java Build Path Entries.

2. Em Next, veremos todas as bibliotecas que dispomos em Java Build Path. Selecionem todas – as bibliotecas para executar o relatório JasperReports devem estar presentes – finalizando no botão Finish.

3. Retornando ao diálogo Properties, no item Deployment Assembly, temos todas as bibliotecas que serão adicionadas ao diretório lib do projeto, incluindo font.jar.

A fonte como uma biblioteca no seu aplicativo Web pelo NetBeans IDE

No NetBeans IDE, basta adicionar em Libraries, clicando com o direito do mouse e selecionando, no menu de contexto, o item Add JAR / Folder.

Figura 7 – As bibliotecas que serão exportadas para o diretório /lib do projeto Web

Antes e depois da fonte adicionada ao projeto

Para satisfazer a curiosidade do que será visto, temos a Figura 8 que mostra um relatório gerado, em formato PDF, sem a fonte no diretório lib do projeto. Note a diferença com a Figura 9 em relação ao formato da fonte, principalmente do título “Produtos”.

Figura 8 – Arquivo PDF gerado como relatório sem a fonte no diretório lib do projeto

Figura 9 – Arquivo PDF gerado como relatório com a fonte no diretório lib do projeto

O projeto para download

Clique aqui para baixar o projeto em Eclipse e alterá-lo como desejar.

4 Responses to “Gerando relatórios JasperReports com fontes personalizadas utilizando o Jaspersoft® Studio”

  1. Cleiton says:

    Bom dia, estou com o seguinte problema. criei o relatório em jasper,porém ao gerar em PDF está vindo desconfigurado e os campos não está vindo em negrito.
    obs: em qualquer outro formato funciona.

  2. Edson Gonçalves says:

    @Cleiton,

    Com fontes personalizadas, precisa ter certeza de que elas estão inclusas no seu aplicativo, pois o comportamento que cita é a falta das fontes.

  3. Rodrigo says:

    Edson, uma dúvida.

    Enquanto estou rodando a aplicação dentro do Eclipse, as fontes no relatório estão OK, funcionando perfeitamente. Porém após gerar o .jar as fontes deixam de funcionar.

    Eu gerei o .jar com as fontes dentro e adicionei ao classpath do projeto, porém mesmo assim, ao usar o JasperExportManager, o pdf gerado sair sem as fontes.

    Alguma sugestão?

  4. Edson Gonçalves says:

    @Rodrigo,

    Só se o JAR não está sendo incluso no aplicativo para ele não funcionar.

Leave a Reply