Exportar PDF multilenguaje con JasperReport

4
25080

Exportar PDF multilenguaje con JasperReport

Introducción

En anteriores tutoriales disponibles en Adictosaltrabajo.com
se habla de iReport
(http://jasperforge.org/sf/projects/ireport),
una herramienta que nos ayuda a diseñar visualmente informes
(.jrxml)
para posteriormente poder usarlos con JasperReport (http://jasperreports.sourceforge.net).
JasperReport compilará el informe, lo
rellenará y posteriormente lo exportará
a un documento (pdf, doc, csv, xls, rtf, odt, etc).

Actualmente existe en Adictosaltrabajo.com
un tutorial donde se explica cómo poder exportar un
informe multilenguaje a PDF usando iReport (http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=ireportMultilanguage). 

Pero, ¿qué pasa si no utilizamos
iReport? ¿cómo creamos nuestro informe multilenguaje y lo
exportamos? 

Este tutorial se centrará en solucionar los
posibles errores a la hora de exportar textos en árabe
(también podría valer para la gran
mayoría de los idiomas) a PDF. Dejaremos para otro
tutorial el cómo crear un informe «a mano« sin usar
herramientas visuales como iReport….

Entorno de trabajo

  • iReport 1.3.2
  • JDK 1.6.0
  • Sistema operativo Windows XP Home Edition
  • Entorno de desarrollo Eclipse 3.2
  • Ejemplo

    Como se comenta en el tutorial de cómo exportar PDF
    multilenguaje con iReport (http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=ireportMultilanguage)
    la solución a nuestro problema es poner en el
    atributo «pdfFontName»
    la fuente (por ejemplo ARIAL.TTF)
    y en «pdfEncoding»
     el tipo de codificación «Identity-H«.
    También habría que colocar la fuente usada (ARIAL.TTF) en el classpath de la
    aplicación.

    En caso de no usar iReport y crear nuestro informe «a mano» con
    JasperReport esta solución se implementaria de la siguiente
    manera…

    Existen dos formas de hacerlo:

    1    Crear un estilo y añadirlo
    al objeto (<staticText>,<textField>,etc…)
    donde aparezca el texto en árabe.

    2    Crear una nueva fuente y añadirla al objeto.

    Solución 1

    Vamos a crear un estilo sencillito utilizando la fuente ARIAL.TTF…   

         
          JasperDesign jasperDesign = new JasperDesign();

            ….

            ….

            JRDesignStyle normalStyle = new JRDesignStyle();

            normalStyle.setName(«Arial_Normal»);

            normalStyle.setDefault(true);

            normalStyle.setFontName(«Arial»);

            normalStyle.setFontSize(12);

            normalStyle.setPdfFontName(«ARIAL.TTF»);

            normalStyle.setPdfEncoding(«Identity-H»);

            normalStyle.setPdfEmbedded(true);

            jasperDesign.addStyle(normalStyle);

            …

            …

            Una vez creado el estilo lo añadimos al objeto staticText.

            

            staticText = new JRDesignStaticText();

            staticText.setX(100);

            staticText.setY(30);

            staticText.setWidth(150);

            staticText.setHeight(15);

            staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT);

            staticText.setStyle(normalStyle);

            staticText.setText(«مشف ن وشمخأ»);

            band.addElement(staticText);

            jasperDesign.setColumnHeader(band);

            …

            …

    Solución 2

    Vamos a crear una nueva fuente y la añadimos al objeto staticText

            JasperDesign jasperDesign = new JasperDesign();

            ….

            ….

            staticText = new JRDesignStaticText();

            staticText.setX(245);

            staticText.setY(30);

            staticText.setWidth(150);

            staticText.setHeight(15);

            staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT);

            font = new JRDesignReportFont();

            font.setPdfEmbedded(true);

            font.setPdfFontName(«cour.ttf»);

            font.setPdfEncoding(«Identity-H»);

            font.setFontSize(12);

            staticText.setFont(font);

            staticText.setText(«مشف ن وشمخأ»);

            band.addElement(staticText);

            jasperDesign.setColumnHeader(band);

            …

            …

           

    Aquí dejo un sencillo programa Java (prueba.java) que se encarga de crear un informe básico con textos en español y árabe, compilarlo y exportarlo a PDF. Recordad que las fuentes utilizadas (cour.ttf y arial.ttf) en el informe deben colocarse en el classpath de la aplicación.
    El resultado final es un PDF como este (InformeMultiLenguaje.pdf)…

    texto en PDF

    Conclusión

    Como véis, la exportación de informes en diferentes idiomas
    con JasperReport  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.

    4 COMENTARIOS

    1. Hola alfonso, perdona, pero no sé donde ni a quién dirigirme. Conseguí, gracias a alguno de tus tutoriales integrar java en php mediante javabridge y hacer llamadas a reportes diseñados con ireport. Todo va perfecto, pero quiero encriptarlos. He buscado la forma mediante código pero no lo he conseguido. La versión 3.6.0 de ireport dispone en sus opciones la posibilidad de encriptar y establecer permisos para el PDF, pero al compilarlo da errores, solo cuando le digo que lo encripte. ¿sabrías decirme qué puedo hacer? infinitas gracias. sagatz@msn.com

    2. Quedé sorprendido de la buena organización y auto-organización, la cantidad/calidad de asistentes y el interés y naturalidad de todo el mundo.

      Solo se puede felicitar y dar las gracias al equipo promotor/organizador del evento.

      Me ha quedado una cosa clara: gente como la que ha asistido a este evento es la gente de la que quiero estar cerca: gente que te hace pensar, de la que aprender y con la que recorrer el camino del conocimiento.

      Cada día estoy más contento de participar y apoyar estas iniciativas.

    3. Es algo curioso, cuanto más arriba en la pirámide de la empresa menos definido el trabajo. Yo trabajo de administrativa a pesar de ser \\\»casi\\\» ingeniera informática, \\\»casi\\\» porque me falta presentar el proyecto final de carrera y puedo dar una lista detallada de mis tareas, mi jefe directo tiene una lista más difusa y si vamos subiendo en la estructura al final llegamos a ¿pero fulanito a que se dedica?. Los de abajo hacemos tareas concretas y los de arriba deben controlar, planificar, y eso puede significar muchas cosas.

    4. 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 funeciona en el ireport 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

    DEJA UNA RESPUESTA

    Por favor ingrese su comentario!

    He leído y acepto la política de privacidad

    Por favor ingrese su nombre aquí

    Información básica acerca de la protección de datos

    • Responsable:
    • Finalidad:
    • Legitimación:
    • Destinatarios:
    • Derechos:
    • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad