2010-10-21 15 views
12

Después de actualizar Jasper a la última versión, dejó de encontrar una fuente: Símbolo. El resto de las fuentes parecen estar bien. Tengo un montón de RSA en el mismo directorio que cuando Jasper se ejecuta, el programa es sólo un pequeño envoltorio para generar archivos PDF, y se está lanzando este error:Jasper deja de encontrar una fuente

net.sf.jasperreports.engine.util.JRFontNotFoundException: Font 'Symbol' is not available to the JVM. See the Javadoc for more details. 
    at net.sf.jasperreports.engine.util.JRFontUtil.checkAwtFont(JRFontUtil.java:358) 
    at net.sf.jasperreports.engine.util.JRStyledText.getAwtAttributedString(JRStyledText.java:226) 
    at net.sf.jasperreports.engine.fill.TextMeasurer.measure(TextMeasurer.java:362) 
    at net.sf.jasperreports.engine.fill.JRFillTextElement.chopTextElement(JRFillTextElement.java:1129) 
    at net.sf.jasperreports.engine.fill.JRFillStaticText.prepare(JRFillStaticText.java:183) 
    at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:329) 
    at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:419) 
    at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:378) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2028) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:757) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:269) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:127) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:942) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:860) 
    at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84) 
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624) 
    at XmlJasperInterface.report(XmlJasperInterface.java:82) 
    at XmlJasperInterface.main(XmlJasperInterface.java:60)</pre> 

El directorio donde se ejecuta el programa:

# ls *.ttf 
arial.ttf arialbd.ttf lsans.ttf lsansd.ttf lsansi.ttf symbol.ttf 

Se encuentran todas las demás fuentes. Oh, en mi computadora portátil (macosx), funciona bien, solo se rompe en el servidor (Debian). Abrí symbol.ttf y se abrió bien en Mac OS X (solo en caso de que el archivo estuviera dañado).

¿Alguna idea de lo que puede estar pasando?

Respuesta

13

Trate de añadir la línea

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

a sus jasperreports.properties archivo.

+5

Eso no hace que encuentre la fuente, pero hace que no se queje y utiliza cualquier otra fuente que pueda. Como ese era el comportamiento anterior y todo el mundo estaba contento con él antes, lo hice aunque no es la solución óptima. – Pablo

+2

Esto no resuelve el problema, simplemente ignora el problema. –

+0

Este es el valor predeterminado para jasperserver, pero sigo recibiendo el error acerca de las fuentes que faltan. –

2

Bueno, la fuente debe instalarse en el sistema operativo donde se ejecuta el informe.

+1

De hecho. jasperreports busca las fuentes disponibles en el sistema operativo. Por ejemplo, si diseña el informe en Windows y ejecuta la aplicación en Linux, obtendrá algo distinto a lo que vio en iReport, a menos que use fuentes que se puedan usar en ambos entornos. – Alfabravo

1

Los pasos para resolver este problema sería

  1. abierto jasperreports-x.x.x.jar, en mi caso jasperreports-3.7.2.jar.
  2. Busque default.jasperreports.properties y ábralo.
  3. Encuentra la línea net.sf.jasperreports.awt.ignore.missing.font = false valor y el cambio de falso a verdadero net.sf.jasperreports.awt.ignore.missing.font = true.
  4. Actualiza el jar.
  5. Agregue a classpath de su proyecto.

Se ha solucionado el problema.

+7

No es necesario editar el JAR. Solo necesita crear un jasperreports.properties y agregarlo a classpath solo con las propiedades que desea modificar (como se indica en la solución aceptada). –

+0

Hice que funciona bien cuando ejecuto clases desde eclipse. pero no funciona cuando exporto como jar Runnable me da debajo de errror "net.sf.jasperreports.engine.JRException: flujo de entrada no encontrado en: fonts.xml" –

5

en Ubuntu que necesitaba para desinstalar las fuentes y volver a instalarlos:

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

Entonces, funciona bien.

0

Actualización para el año 2015:

añadir esto a (o elimine el comentario en) /etc/apt/sources.list

deb http://us.archive.ubuntu.com/ubuntu/ trusty multiverse 
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse 
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse 

A continuación, ejecute la siguiente:

sudo apt-get update 
sudo apt-get install msttcorefonts 
0

estoy usando JasperReports 6.3.1. He resuelto el problema agregando la siguiente línea en mi .jrxml:

<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/> 

De esta manera nuestro informe se verá algo diferente, dependiendo de las fuentes que están preinstaladas en el sistema.En mi caso, no representa un problema, y ​​no estoy interesado en agregar una fuente extra en mi proyecto, ya que necesito ser lo más liviano posible.


En caso de que quiera utilizar las fuentes originales del informe en todos los entornos de ejecución, una solución fácil es añadir las dependencias necesarias para el proyecto.

Un ejemplo, para Maven:

<dependency> 
    <groupId>net.sf.jasperreports</groupId> 
    <artifactId>jasperreports-fonts</artifactId> 
    <version>6.0.0</version> 
</dependency> 

También puede descargar las bibliotecas y añadirlos manualmente al proyecto, sin embargo, funcionará.


Espero que los encuentres útiles.

Cuestiones relacionadas