A fonte não está disponível para a JVM com o Jasper Reports

Estou tentando gerar um relatório com o DynamicJasper, mas estou recebendo o seguinte erro:

net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'Arial' is not available to the JVM. 

O msttcorefonts está instalado, mas acho que a JVM não está usando nenhuma fonte dele.

Estou usando o Ubuntu 10.04.

Como posso consertar isso?

Eu tentei instalar mscorefonts, mas o pacote foi instalado e atualizado.

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

Eu tentei procurar pela fonte no sistema de arquivos, com:

 ls /usr/share/fonts/truetype/msttcorefonts/ 

Esta pasta só tinha o README, com as instruções corretas sobre como instalar.

 cat /usr/share/fonts/truetype/msttcorefonts/README 

Você precisa de uma conexão com a internet para isso:

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

Eu reinstalei o ttf-mscorefonts-installer (como mostrado acima, certificando-se de aceitar o EULA!) E o problema foi resolvido.

Eu uso o IReport para instalar a fonte:

ferramentas -> opções -> fonts -> clique em instalar fonte

Em seguida, selecione a fonte e clique em

-> exportar como extensão e nome do tipo myfont.jar

adicione este jar e também spring.jar * ao seu caminho de construção.

* Copie spring.jar do Jaspersoft \ iReport-3.7.0 \ ireport \ modules \ ext

JasperReports gera um JRFontNotFoundException no caso em que a fonte usada dentro de um modelo de relatório não está disponível para a JVM como uma fonte do sistema ou uma fonte proveniente de uma extensão de fonte JR. Isso garante que todos os problemas causados ​​por incompatibilidades de métricas de fonte sejam evitados e temos um aviso antecipado sobre a inconsistência.

Os relatórios do Jasper estão tentando ajudá-lo no desenvolvimento do relatório, afirmando que ele não pode exportar o relatório corretamente, pois não é possível encontrar a fonte definida no TextField ou StaticText

  

Sim, você pode desabilitar isso definindo net.sf.jasperreports.awt.ignore.missing.font como false, mas você terá inconsistências de exportação .

Sim, você pode instalar a fonte como fonte do sistema JVM (mas precisa fazer isso em todos os PCs usados ​​que possam gerar relatórios e ainda assim você pode ter problemas de codificação ).

O caminho correto!

Use extensões de fonte ! , se você quiser criar o seu próprio (veja link abaixo), o jasper reports também distribui um jar padrão de extensão de fonte ( jasperreports-fonts-xxxjar ), que suporta fontName DejaVu Sans , DejaVu Serif e DejaVu Sans Mono

  

Do guia final do JasperReport:

Nós encorajamos as pessoas a usar apenas fonts derivadas de extensões de fonts, porque esta é a única maneira de garantir que as fonts estarão disponíveis para o aplicativo quando os relatórios forem executados em tempo de execução. A utilização de fonts do sistema sempre traz o risco de os relatórios não funcionarem corretamente quando implantados em uma nova máquina que talvez não tenha essas fonts instaladas

Links no StackOverflow sobre como renderizar fonts corretamente em pdf

Lista de verificação sobre como renderizar a fonte corretamente em pdf

Gere extensões de fonts com o JasperSoft Studio

Gere extensões de fonts com o iReport

Para o CentOS:

wget msttcorefonts

Então:

 tar -zxvf msttcorefonts.tar.gz cp msttcorefonts/*.ttf /usr/share/fonts/TTF/ fc-cache -fv 

Afinal, reinicie a JVM.

Muito obrigado às respostas anteriores. sudo apt-get install msttcorefonts funciona (no nosso ambiente de desenvolvimento Ubuntu), mas não é uma solução muito boa.

Em vez disso, reunimos as fonts com nosso aplicativo com base nessa dica . Seu arquivo JAR reúne as seguintes fonts,

  • Arial
  • Times New Roman
  • Courier Novo
  • Comic Sans MS
  • Geórgia
  • Verdana
  • Monoespaçado

Link direto para fazer download do jar: Maven ver 1.0. DynamicFonts

Existem três methods para evitar esse problema.

Método 1: definindo ignorar propriedade de fonte ausente.

 JRProperties.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true"); 

ou você pode definir essa propriedade inserindo a seguinte linha no arquivo .jrxml.

  

Método 2: definindo a propriedade de fonte padrão.

 JRProperties.setProperty("net.sf.jasperreports.default.font.name", "Sans Serif"); 

ou você pode definir essa propriedade inserindo a seguinte linha no arquivo .jrxml.

  

Método 3: adicionando propriedade de fonte ausente.

Em primeiro lugar instalar fonts ausentes no IReport, selecionando “Ferramentas >> Opções >> Fontes >> Instalar Fonte”, em seguida, selecione toda a fonte e exportar isso, clicando em “Exportar como extensão” com Extensão .jar.

Você pode usar este jar para Jasperreports-font.XXXjar, que estará presente em sua biblioteca de projetos ou classpath.

Eu resolvi isso escolhendo apenas ‘SansSerif’ ou ‘Serif’ e não ‘Arial’ ou ‘Times New Roman’.

Tente adicionar a linha

net.sf.jasperreports.awt.ignore.missing.font = true

para o seu arquivo jasperreports.properties.

Jasper para de encontrar uma fonte

pode fazer suas fonts personalizadas via iReport e converter arquivos como jars

Você pode fazê-lo instalando fonts, o que significa que você deseja executar esse aplicativo em qualquer lugar. A maneira mais simples é simplesmente adicionar esta linha bl ao seu arquivo jrxml:

   

Espero que ajude.

Enfrentei o problema com meu aplicativo da web baseado no Spring 3 e implantei no Weblogic 10.3 no Oracle Linux 6. A solução mencionada no link não funcionou para mim.

Eu tive que tomar as seguintes medidas – 1. Copie os arquivos de fonte Arial * .ttf para o diretório JROCKIT_JAVA_HOME / jre / lib / fonts 2. Faça inputs das fonts em fontconfig.properties.src 3. Reinicie o cluster do console Weblogic

 filename.Arial=Arial.ttf filename.Arial_Bold=Arial_Bold.ttf filename.Arial_Italic=Arial_Italic.ttf filename.Arial_Bold_Italic=Arial_Bold_Italic.ttf 

Para o Debian

adicionar

 non-free contrib 

para deb e deb-src em /etc/apt/sources.list ie:

 deb http://ftp.debian.org/debian/ squeeze main non-free contrib deb-src http://ftp.debian.org/debian/ squeeze main non-free contrib 

Então

 apt-get update apt-get install msttcorefonts 

Claro que você precisará reiniciar o jasperserver. ie:

 /opt/jasperreports-server-cp-4.5.0/ctlscript.sh restart 

Mude para sua versão / caminho.

Copie suas fonts no seguinte diretório JDK_HOME \ jre \ lib \ fonts

Criar relatório jasper em vários idiomas (Unicode)

1) Instale a fonte no ireport desginer

2) criar extensão de fonte (vamos usá-lo em classpath de aplicativos)

3) instalar fonte no sistema operacional (opcional)

4) cole todos os arquivos .ttf da fonte no diretório jre-> lib-> fonts (caso contrário, o aplicativo da web emitirá uma fonte de erro não disponível para a JVM)

Na verdade, resolvi esse problema de uma maneira muito simples

  1. vá para o home path sua home path , como /root
  2. crie uma pasta chamada .fonts
  3. Copie all your font files para .fonts , você pode copiar a fonte de C:\windows\fonts se você usar o windows.
  4. sudo apt-get install fontconfig
  5. fc-cache –fv para reutilizar caches de fonts.

Ei Tem dificuldade para visualizar documentos produzidos no Windows?

Você pode tentar uma solução bem fácil:

yum instalar curl cabextract xorg-x11-font-utils fontconfig

rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm

Depois disso eu preciso reiniciar meu sistema CentOS6.

Fonte: http://mscorefonts2.sourceforge.net/

Solução em 2 etapas (se você estiver usando o centOS)

  1. Faça o download do pacote rpm de fonts principais da Microsoft.

     [root@WEBSVR~/]# wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm 
  2. Instale o pacote rpm.

     [root@WEBSVR~/]# rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm