Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero Informático *
Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación
Somos expertos en Java/J2EE
Regístrate para votar
Exportar PDF multiidioma con iReport
Introducción
En este tutorial vamos a ver como poder crear un informe en diferentes idiomas (francés, árabe, hebreo, ruso, griego, etc.) y exportarlo en formato PDF con iReport (http://jasperforge.org/sf/projects/ireport) sin ningún problema con las fuentes ni tipologías propias del lenguaje.
Actualmente existe en Adictosaltrabajo.com un tutorial donde se habla de iReport, su instalación, su configuración y sus funcionalidades básicas para crear informes sencillos (http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=ireport).
En nuestras aplicaciones podemos tener la necesidad de crear informes y exportarlos en varios formatos (pdf, doc, csv, xls, txt, etc.) usando diferentes idiomas. En este tutorial se va a explicar y solucionar algunos problemas que podemos tener a la hora de exportar a formato PDF informes en idiomas diferentes. Vamos a usar para este tutorial el idioma árabe.
Entorno de trabajo
Ejemplo
Para nuestro primer ejemplo vamos a crear un sencillo informe con textos en español y árabe.
Ahora elegimos exportarlo a PDF y ejecutamos nuestro informe.
Vemos que los textos en español salen perfectamente mientras que el texto en árabe (Autentia) no sale en el PDF. ¿porqué?
Vamos a ver si podemos arreglar esto...Nos vamos a nuestro informe, seleccionamos el área de texto en árabe. Pulsamos el botón derecho y hacemos click en Propiedades.

Una vez dentro del menú "Propiedades" vamos a la pestaña "Fuente", cambiamos la codificación del PDF a "CP1256 (Arabic)" y activamos la opción de "Ajustado al PDF".

Ahora vamos a ver si los cambios que hemos hecho funcionan. Ejecutamos de nuevo nuestro informe y vemos el PDF generado...

Pero vemos que tampoco exporta bien el texto en árabe, ¿porqué?
Solución
Para solucionar estos problemas tenemos que meter en el classpath de nuestra aplicación la fuente con la que queramos exportar nuestro texto al PDF. En nuestro ejemplo, la aplicación desde donde estamos ejecutando y exportando nuestros informes es iReport, por lo que vamos a copiar nuestra fuente al classpath de iReport (habitualmente "C:\Archivos de programa\JasperSoft\iReport-1.3.2"). La fuente seleccionada para nuestro ejemplo va a ser una fuente de Windows, por ejemplo, Arial. ("C:\WINDOWS\Fonts\ARIAL.TTF").
Por ejemplo, si estamos lanzando nuestro informe desde una aplicación web, tenemos que colocar nuestra fuente ARIAL.TTF en "WEB-INF\classes" (classpath) para que nuestro PDF se visualize correctamente. En general debemos colocar la fuente seleccionada para nuestro informe en el classpath de la aplicación que este "ejecutando" dicho informe.

Una vez copiada nuestra fuente, vamos a cambiar nuestro informe. Seleccionamos el área de texto en árabe, pulsamos en botón derecho y hacemos click en "Propiedades". Dentro del menú Propiedades vamos a la pestaña "Fuentes". El menú desplegable donde se selecciona la fuente del pdf ("Nombre fuente PDF") es un menú editable, por lo que podemos escribir en él y ponemos el nombre de nuestro archivo fuente (en el ejemplo es ARIAL.TTF). Además tenemos que cambiar la codificación del PDF y seleccionar la opción de "Identity-H (Unicode with horizontal writing)".

Estos cambios hacen que nuestro fichero .JRXML tenga este aspecto.
<staticText>
<reportElement
x="159"
y="42"
width="131"
height="16"
key="staticText-6"/>
<box topBorder="None"
topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000"
rightBorder="None" rightBorderColor="#000000" bottomBorder="None"
bottomBorderColor="#000000"/>
<textElement
textAlignment="Center">
<font fontName="Arial" pdfFontName="ARIAL.TTF" isPdfEmbedded
="true" pdfEncoding ="Identity-H"/>
</textElement>
<text><![CDATA[ِعفثىفهش]]></text>
</staticText>
Ahora comprobamos que nuestro PDF se genera correctamente...

Nuestro ejemplo lo hemos hecho con árabe pero podriamos probarlo con todos los idiomas que deseemos...

Conclusión
Como veis, la exportación de informes en diferentes idiomas con iReport no es particularmente complicado. Nosotros, los miembros de Autentia, intentamos acercaros ese conocimiento a través de nuestros tutoriales. Pero si la solución a vuestros problemas no se encuentra en www.AdictosAlTrabajo.com, ya sabéis que podéis poneros en contacto con nosotros para que os asesoremos y formemos.Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.
Comentarios
-
2010-04-28 - 20:06:29marissac1985Buenas tardes ..
Bueno eh leido varios de sus tutoriales y me han sido de gran ayuda gracias por ello. Actualmente me encuentro con un problema que solicita el generar varios archivos jasper y que se unan en un pdf, es decir varios archivos jasper iguales que al ejecutarse en java se unan en un PDF. Eh estado buscando como realizarlo pero la verdad es que no encuentro nada relacionado. Espero pueda ayudarme. De antemano gracias y Dios le bendiga. -
2009-11-26 - 17:36:57DiegoKEsta muy bueno el tutorial, lo unico que no logre solucionar es lanzar mi informe desde una aplicación web (server) con el servidor de aplicaciones Tomcat 6 y la plataforma es linux Debian cuando utilizo tipo de fuente de datos para código de barras.
No puedo decirle cual es el tipo fuente de datos, ya que utilizo código de barras. Esto si me funciona bien bajo Windows. Pero no logre hacerlo bajo Linux.
-
Carlos2009-07-24 - 02:32:09 PMAlfonso, muy bueno el tutorial, me funcionó al instante, Gracias!
-
Pedro Rios2007-10-01 - 11:21:58 PMMuy Bueno... el tutorial.. Luego de mas de 4 horas de trabajo.. llegue a este magnifico tutorial., que practicamente me ha salvado el reporte jeje! Sigan con estas publicaciones.








