La fuente no está disponible para la JVM con Jasper Reports

Intento generar un informe con DynamicJasper, pero aparece el siguiente error:

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

msttcorefonts está instalado, pero supongo que la JVM no usa ninguna fuente.

Estoy usando Ubuntu 10.04.

¿Cómo puedo arreglar esto?

Intenté instalar mscorefonts, pero el paquete estaba instalado y actualizado.

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

Intenté buscar la fuente en el sistema de archivos, con:

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

Esta carpeta acaba de tener el archivo README, con las instrucciones correctas sobre cómo instalarlo.

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

Necesitas una conexión a Internet para esto:

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

¡ ttf-mscorefonts-installer (como se muestra arriba, asegurándome de aceptar el EULA!) Y el problema fue resuelto.

Yo uso IReport para instalar la fuente:

herramientas -> opciones -> fonts -> haga clic en instalar fuente

Luego selecciona la fuente y haz clic

-> exportar como extensión y escribir el nombre myfont.jar

agregue este jar y también spring.jar * a su ruta de comstackción.

* copie spring.jar de Jaspersoft \ iReport-3.7.0 \ ireport \ modules \ ext

JasperReports genera una excepción JRFontNotFoundException en el caso en que la fuente utilizada dentro de una plantilla de informe no está disponible para la JVM, ya sea como una fuente del sistema o una fuente proveniente de una extensión de fuente JR. Esto garantiza que todos los problemas causados ​​por las discrepancias en las métricas de fonts se eviten y tenemos una advertencia temprana sobre la incoherencia.

Los informes de Jasper intentan ayudarte en el desarrollo de tu informe, indicando que no puede exportar tu informe correctamente ya que no puede encontrar la fuente definida en TextField o StaticText

  

Sí, puede deshabilitar esto estableciendo net.sf.jasperreports.awt.ignore.missing.font como falso, pero tendrá incoherencias de exportación .

Sí, puede instalar la fuente como fuente del sistema JVM (pero debe hacerlo en todas las PC utilizadas que puedan generar informes y aún así puede tener problemas de encoding ).

¡La forma correcta!

¡Usa extensiones de fonts ! , si desea crear uno propio (consulte el enlace a continuación), los informes de jaspe también distribuyen un jarrón de extensión de fuente predeterminado ( jasperreports-fonts-xxxjar ), que admite fontName DejaVu Sans , DejaVu Serif y DejaVu Sans Mono

  

De la última guía JasperReport:

Recomendamos encarecidamente a las personas que utilicen únicamente fonts derivadas de extensiones de fonts, ya que esta es la única manera de asegurarse de que las fonts estarán disponibles para la aplicación cuando los informes se ejecuten en tiempo de ejecución. El uso de fonts del sistema siempre conlleva el riesgo de que los informes no funcionen correctamente cuando se implementan en una máquina nueva que podría no tener esas fonts instaladas.

Enlaces en StackOverflow sobre cómo renderizar fonts correctamente en pdf

Lista de verificación sobre cómo renderizar la fuente correctamente en pdf

Genera extensiones de fuente con JasperSoft Studio

Genera extensiones de fuente con iReport

Para CentOS:

wget msttcorefonts

Entonces:

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

Después de todo, reinicie JVM.

Muchas gracias a las respuestas anteriores. sudo apt-get install msttcorefonts funciona (en nuestro entorno de desarrollo Ubuntu), pero no es una muy buena solución.

En cambio, agrupamos las fonts con nuestra aplicación en función de este consejo . Su archivo JAR agrupa las siguientes fonts,

  • Arial
  • Times New Roman
  • Courier Nuevo
  • Comic Sans MS
  • Georgia
  • Verdana
  • Monospaced

Enlace directo para descargar el archivo jar: Maven ver 1.0. DynamicFonts

Hay tres métodos para evitar tal problema.

Método 1: estableciendo ignorar la propiedad de fuente faltante.

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

o puede establecer esta propiedad ingresando la siguiente línea en el archivo .jrxml.

  

Método 2: estableciendo la propiedad de fuente predeterminada.

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

o puede establecer esta propiedad ingresando la siguiente línea en el archivo .jrxml.

  

Método 3: agregando la propiedad de fuente faltante.

Primero instale las fonts que faltan en IReport seleccionando “Herramientas >> Opciones >> Fuentes >> Instalar fuente”, luego seleccione todas las fonts y Exporte esto haciendo clic en “Exportar como extensión” con la extensión .jar.

Puede usar este jar para Jasperreports-font.XXXjar que estará presente en su biblioteca de proyectos o classpath.

Lo resolví eligiendo ‘SansSerif’ o ‘Serif’ solamente y no ‘Arial’ o ‘Times New Roman’.

Intenta agregar la línea

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

a su archivo jasperreports.properties.

Jasper deja de encontrar una fuente

puede hacer sus fonts personalizadas a través de iReport y convertir archivos como jars

Puede hacerlo instalando fonts, eso quiere decir donde quiera que quiera ejecutar esa aplicación en particular. La forma más simple es simplemente agregar esta línea bl a su archivo jrxml:

   

Espero eso ayude.

Enfrenté el problema con mi aplicación web basada en Spring 3 y la implementé en Weblogic 10.3 en Oracle Linux 6. La solución mencionada en el enlace no funcionó para mí.

Tuve que seguir los siguientes pasos: 1. Copie los archivos de fonts Arial * .ttf en el directorio JROCKIT_JAVA_HOME / jre / lib / fonts 2. Realice las entradas de las fonts en fontconfig.properties.src 3. Reinicie el clúster desde la consola 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 Debian

añadir

 non-free contrib 

para deb y deb-src en /etc/apt/sources.list, es decir:

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

Entonces

 apt-get update apt-get install msttcorefonts 

Por supuesto, deberás reiniciar jasperserver. es decir:

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

Cambiar para su versión / ruta.

Copie sus fonts en el siguiente directorio JDK_HOME \ jre \ lib \ fonts

Crear un informe de jaspe en múltiples idiomas (Unicode)

1) Instalar fuente en ireport desginer

2) crear extensión de fuente (lo usaremos en aplicaciones classpath)

3) instalar la fuente en el sistema operativo (opcional)

4) pegue todos los .ttf de la fuente en el directorio jre-> lib-> fonts (de lo contrario, la aplicación web arrojará la fuente de error no está disponible para JVM)

En realidad arreglé este problema de una manera muy simple

  1. ve a tu home path , como /root
  2. crea una carpeta llamada .fonts
  3. copie all your font files en .fonts , puede copiar la fuente desde C:\windows\fonts si usa Windows.
  4. sudo apt-get install fontconfig
  5. fc-cache –fv para volver a generar cachés de fonts.

Oye ¿Tiene problemas para ver documentos producidos en Windows?

Puede probar una buena solución 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

Después de esto, necesito reiniciar mi sistema CentOS6.

Fuente: http://mscorefonts2.sourceforge.net/

Solución en 2 pasos (si usa centOS)

  1. Descargue el paquete de rpm de Microsoft core fonts.

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

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