JasperReports el report no encuentra las fonts configuradas en tiempo de ejecución

PROBLEMA:  El informe no funciona porque no encuentra las fonts ya que estas pueden variar de una JVM a otra.

Tendríamos una excepción del tipo…

JRFontNotFoundException: Font 'Arial' is not available to the JVM.

SOLUCIÓN:

  1. Instalar las fuentes en la máquina virtual, esto dependerá un poco del sistema operativo, en linux en general se puede optar por instalar el paquete ttf-mscorefonts, para asegurarnos de las fuentes disponibles en nuestra JVM podemos ejecutar el siguiente código:
    public static void main(String[] args) throws Exception {
                System.out.println(Arrays.asList(GraphicsEnvironment
                        .getLocalGraphicsEnvironment().getAvailableFontFamilyNames()));
    }
  2. También podemos hacer que Jasper ignore las fuentes configuradas y las cambie por alguna de las que tenga disponibles, para esto hay que insertar la siguiente propiedad en el report:
    <property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>

jasperReports el navegador no muestra los links de un pdf

PROBLEMA:  Un report exportado en PDF y visualizado desde un navegador no muestra los links, puede ser una medida de seguridad del visor PDF del navegador que podría detectarlo como un posible XSS?, cuando te descargas el fichero y lo abres con Adobe Reader todo es correcto.

 

SOLUCIÓN:  Configurar el Link Target de los enlaces como:  “Parent” para que se muestren correctamente.

JasperReports subreport con conexión una Base de Datos distinta al Report

Construyendo un Report que incluye diferentes subreports con Jaspersoft Studio 6.01 me he encontrado con el problema de ejecutar un subreport con una conexion a base de datos diferente a la del Informe principal.

SOLUCIÓN:

  1. Crear un parametro en el Report principal en el que configuramos la conexion para el subereport.

Captura de pantalla 2015-09-24 a las 12.33.29

2. En la llamada al subreport, pasarle el parametro conexión en el campo: “connectionExpresion”

Captura de pantalla 2015-09-24 a las 12.36.56

El código fuente en XML quedaría así…

<connectionExpression><![CDATA[$P{subreportConnection}]]></connectionExpression>
<subreportExpression><![CDATA["file:subreport.jasper"]]></subreportExpression>

TIBCO Jaspersoft studio 6.1

Esta herramienta es la última evolución del bien conocido editor iReport.  En esta versión está construida sobre la plataforma Eclipse y ofrece una solución más completa que el viejo editor extendiendo sus capacidades y funcionalidad.

Resumiendo mucho para los que no estén familiarizados con la herramienta, jaspersoft studio permite entre otras cosas la generación de informes preparados para ser compilados y ejecutados con la libreria Jasper Reports que es la librería de código abierto más popular a la hora de generar informes, esta librería está escrita completamente en Java y permite la utilización de cualquier tipo de origen de datos además produce documentos “pixel-perfect” que pueden verse, imprimirse o exportarse en múltiples formatos  como: HTML, PDF, Excel, OpenOffice, Word etc…

TIBCO Jaspersoft studio es una pieza más de una compleja suite orientada al BI y al Data mining incluyendo servidores de informes, interactive reporting y complejos editores para la generación de informes (que son almacenados en xml bajo la extensión .jrxml para posteriormente ser compilados bajo la extensión .jasper ).

Más información acerca de este producto en la web Jaspersoft

 

Detectar en opencms cuando en un containerpage estoy cargando un detail

La situación que se describe a continuación está probada para las versiones 8 y 9 del opencms.

Recientemente hemos tenido un problema que consistía en extraer propiedades de un CmsResource a partir de la uri, para ello se puede insertar  sin problema en el template un pequeño script el cual partiendo de la uri desde la que es invocado obtenga un objeto CmsResource y a partir de este su CmsUUID etc… esto puede conseguirse de forma sencilla como sigue:

Leer más

Cambiar tipo mime de un fichero

Recientemente me ha pasado que algún editor modifica la codificación de un fichero como consecuencia si yo tengo un fichero .php que muestre una palabra con acentos y el encoding del fichero no coincide con el encoding que yo le estoy diciendo en el “meta”…pues problema al canto y caracteres raros por ahí…

El encoding se puede solucionar guardando el fichero en el encoding apropiado (algunos editores soportan esta opción) pero para linux (Mac) esta es la solución más sencilla que he encontrado.

Solución en linux:

Para identificar que encoding tiene un fichero concreto:

 $file --mime nombrefichero.php 

Esto nos produce una salida…

 nombrefichero.php:         text/plain; charset=iso-8859-1

Para reconvertir al formato que deseamos por ejemplo a utf-8:

  iconv -f iso-8859-1 -t utf-8 nombrefichero.php > nombrefichero_utf8.php

 

*NOTA: cuidado con intentar encodear un fichero formato ascii a utf-8 porque ascii ya es utf-8 por lo que la reconversión no se lleva a cabo.

Instalación de adAS en Ubuntu 12.04

El AdAS es un servidor de autenticación avanzado que realiza funciones de proveedor de identidad con un entorno gráfico de configuración integrado que facilita su administración, puesta en marcha y mantenimiento. El software de administración y gestión que se ofrece está escrito en PHP,  Se puede descargar de la web: http://www.adas-sso.com/es/  es opensource pero no tiene ninguna documentación de instalación o de uso, reservandose esta para el momento de contratación de servicios profesionales con la empresa, este aspecto es el que menos me ha gustado del producto que ha hecho que simplemente para verlo funcionando haya sido un proceso de prueba/error permanente.
Leer más

Directiva trim whitespaces

En ocasiones el uso de etiquetas de terceros o la iteración masiva en bucles hace que se introduzcan muchos espacios inecesarios que pueden hacer que el tamaño de nuestras páginas crezca de forma innecesaria, afortunadamente desde la especificación JSP 2.1 existe una directiva para eliminar todos estos espacios innecesarios.

La solución inmediata en un jsp sería:


<@ page trimDirectiveWhitespaces="true" >


Si queremos generalizarlo En el web.xml de  nuestra aplicación podemos hacer que se aplique a determinados patrones.

<jsp-config>
 <jsp-property-group>
  <url-pattern>*.jsp</url-pattern>
  <trim-directive-whitespaces>true</trim-directive-whitespaces>
 </jsp-property-group>
</jsp-config>

Acceso a opencms basado en CMIS – OpenCMIS

Opencms a partir de su versión 8.5 cumple con la especificación CMIS.

CMIS, que significa Content Management Interoperability Services, es un estándar OASIS  diseñado por por los principales fabricantes de ECM y para la industria de ECM. CMIS permite acceder a los sistemas de gestión de contenidos que implementan CMIS de  una forma normalizada e interoperable.

Con CMIS podemos crear aplicaciones que no tengan que limitarse a un sistema de gestión de contenidos concreto y permite asegurar el futuro de las aplicaciones desarrolladas e integradas con los repositorios con soporte CMIS. El estándar ofrece un catálogo completo de funcionalidades y es capaz de manejar una amplia variedad de sistemas de gestión de contenidos. Con CMIS podemos manejar los contenidos, metadatos de contenidos, control de versiones, contenidos de carpetas, asociaciones y transferencia de ficheros, también contempla un lenguaje de consulta, muy parecido a SQL, que permite hacer búsquedas por contenidos, metadatos, contenido de un documento, etc…

Leer más