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 (https://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.
Esta 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.
Buenas 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.
Es un muy buen tutorial para ganar conocimientos…..pero yo tengo un pequeño problema trabajo con netbeans 6.1 y este trae acoplado el ireport 3.1 lo ke yo estoy asiendo es pasar un codigo(1-07211)a mi reporte, pero que este codigo se muestre con la fuente de codigo de barras lo cual funciona en el ireport cuando le pongo preview, pero a la hora de exportar al pdf no me reconoce la fuente de codigo de barras y me muestra el codigo normal(1-07211),intente varias cosas ya para tratar de de ke al exportar me reconosca la fuente pero aun nada espero alguien pueda darme una solucion si no es mucho pedir graciassss
Buen día,
Al momento en mi aplicación Web, me da un error que no encuentra el pdfEncoding =»Identity-H»