Version 1

    Se você está recebendo o seguinte erro: net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'Arial' is not available to the JVM. See the Javadoc for more details.

    ou tendo erros similares com fontes no jasper uma alternativa é utilizar as fontes que os seus relatórios dependem como jars no servidor.

     

    Para fazer isso, utilize o iReports para gerar um jar com a fonte que se deseja utilizar. No exemplo abaixo consideramos o export da fonte Arial num ambiente Windows 7 com o iReport 3.7.0.

    No menu selecione -> Ferramentas -> Opções. Nas abas selecione Fonts. Se na lista de fontes não constar a fonte que você deseja exportar selecione "Install Font" conforme figura abaixo:

    arial_1.png

    Na janela a seguir indique os demais arquivos que compõem a fonte

    arial_2.pngPressione Finalizar/Finish para incluir a fonte Arial na lista de fontes do jasper.

    arial_3.pngUma vez que a fonte está disponível na listagem, agora é possível clicar em "Export as extension". Selecione o local e a extensão que deseja e pressione Salvar.

    arial_4.pngPara não necessitar incluir este jar dentro de todas as minhas aplicações ou incluir esta dependência em meus projetos uma alternativa é configurar um modulo global para que todos os módulos tenham acesso a este recurso.

    Inicialmente configure um novo modulo no jboss, como sugestão segue a estrutura abaixo:

    arial_5.pngAqui o conteúdo do arquivo module.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.1" name="net.sf.jasperreports.fonts">
        <resources>
            <resource-root path="Arial.jar"/>
        </resources>
        <dependencies>
        </dependencies>
    </module>
    

     

    Agora é necessário configurar o arquivo standalone.xml ou domain.xml (para o domain é necessário observar qual o profile escolhido para incluir corretamente) dentro do subsystem urn:jboss:domain:ee:1.1 conforme abaixo.

    <subsystem xmlns="urn:jboss:domain:ee:1.1">
      <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
      <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement>
           <global-modules>
      <module name="net.sf.jasperreports.fonts"/>
      </global-modules>
    </subsystem>
    

     

    Pronto. Basta reiniciar seu servidor/servidores que agora o jar contendo a fonte Arial estará disponível para o jasper utilizar nos seus relatórios. Existem casos em que é possível solucionar este problema instalando algumas fontes da microsoft direto na distribuição linux, um exemplo é o seguinte pacote para o Debian squeeze :

    sudo apt-get install --reinstall ttf-mscorefonts-installer

    ou

    yum install cabextract xorg-x11-font-utils
    rpm -ivh https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.2-1.noarch.rpm
    

    para CentOS.

     

    O ideal seria utilizar as fontes adaptáveis (assunto para outro tópico) pois estas se adequam as fontes locais dos sistemas. Também é possível ignorar este erro adicionando a seguinte linha ao arquivo .properties do relatório net.sf.jasperreports.awt.ignore.missing.font=true.

     

    Particularmente considero a solução dos módulos mais indicada para os casos em que não é possível alterar as configurações do S.O e tampouco dependo do mesmo para que minha aplicação funcione naturalmente. Também tenho a vantagem de independente da distribuição linux que implantar o sistema as fontes estarão lá para uso.

     

    Bem, é isso. Espero que seja útil a comunidade.

     

    Um abraço a todos e que Deus vos abençoe.