Problema con la fuente del reporte Jasper Reports (RESPONDIDO UNQ)

Buenas!
Este vez escribo porque realizando una prueba con un reporte me pasa que cuando lo previsualizo localmente me lo muestra correctamente. Ahora cuando lo visualizo desde el servidor me arroja el siguiente error: Could not load the following font : pdfFontName : pdfEncoding : Cp1252 isPdfEmbedded : false. Lo que hize fue ponerle la misma fuente (SansSerif) a todos los textos que me levanto desde el xml como para que quede parejo (Habia texto que ya tenía la fuente y otros a los que quise que se vea igual, y es ahí donde surgió el problema). Ahora si lo dejo con las fuentes como me lo trae desde el xml sí anda a la perfección pero no es del mismo tipo la letra del texto que se visualiza. No se si se entiende cual es el problema, cualquier cosa detallo más.

Saludos.
Lucía.

Hola Lucia,

Es un poco raro el error, pareciera que los campos estan en blanco… igualmente el error sea que quizás no tengan esa tipografía (SanSerif) instalada en el servidor. Es indispensable que toda tipografía que utilicen en las salidas Jasper (sea por medio del diseñador iReports, o bien por contenido que define los datos XML como ser los artículos del pliego) este instalada en el servidor y disponible para la JVM.

Para instalar fuentes, hay que recurrir a las herramientas propias del SO que esten usando (por ej en debian https://wiki.debian.org/Fonts).

Saludos!

Tip: Las tipografías son sensibles a mayúsculas y minúsculas, por lo que una fuente SanSerif instalada no es lo mismo que sanserif…

Nosotros tenemos un problema con las tipografías en el caso particular en que los usuarios cargan datos copiados de internet y los xml traen el texto con estilo, y tipo de fuente.

Tuvimos que instalar en el servidor Linux las tipografías de windows: apt-get install msttcorefonts

Sin embargo algunas tipografías no aparecen. Por ejemplo SanSerif nos puede aparecer en un estilo como san-serif, y ahí nos aparece un error que no encuentra la tipografía.

Leí en algunos foros que hay una propiedad para ignorar las fuentes que no encuentra:

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

Esto habría que hacerlo en el archivo jasperreports.properties , sin embargo no encontré dicho archivo.

¿Habrá alguna forma de forzar la salida para que use la misma fuente o que ignore la fuente que no exista?

Saludos

Gabriel

Hola Gabriel,

Efectivamente, existe esa propiedad. Se puede hacer de dos formas:

  • abrir el jar diaguita/toba/php/3ros/JasperReports/jasperreports-5.1.0.jar y editar dicha propiedad en el archivo default.jasperreports.properties (abrir y guardar con un compresor de archivos)
  • crear el archivo diaguita/toba/php/3ros/JasperReports/jasperreports.properties con la propiedad (esta opción puede no funcionar porque no apare en el classpath de la JVM, les dejo la tarea de ubicar como incluirlo en el mismo :D)

Para finalizar, reiniciar el servicio diaguita_reportes.

En cualquiera de estos casos, lo que se hace es ignorar la fuente (al menos en el servidor) con lo que ello conlleva a que en sus entornos locales al utilizar el diseñador les falle o no (si tienen misma configuración o si tienen efectivamente la fuente).

Lo ideal sería tener todas las fuentes instaladas siempre, junto con un mínimo compromiso de no copiar/pegar de forma directa contenido de la web (es recomendable usar un editor ofimático intermedio y normalizar).

Buenas! Gracias por sus respuestas. Lo solucioné copiando un text field que ya me venía cuando levantaba el reporte en Ireport, y pegandolo en el lugar que quería, es decir, no arrastré el componente desde la paleta si no que utilicé una copia del que ya estaba en el reporte. De esa manera, me funcionó correctamente el reporte… tanto localmente como en el servidor.
Saludos.
Lucía.

Actualizo la forma de configurar jasper en diaguita 2.6.0 para que acepte cualquier fuente:

editar con un compresor de archivos :

…/vendor/siu-toba/jasper/JasperReports/jasperreports-5.6.0.jar
…/vendor/siu-toba/jasper/JasperReports/jasperreports-javaflow-5.6.0.jar

buscar en el archivo:

default.jasperreports.properties

editar la linea:
net.sf.jasperreports.awt.ignore.missing.font=false

por

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

reiniciar el servicio de jasper:

/etc/init.d/diaguita_reportes.sh restart

Saludos

Gabriel

Hola Gabriel,

Buenísimo. Muchas gracias por estos aportes, tomamos nota.

Saludos!,
Fernando.