Como ya sabemos, Alfresco tiene muchas posibilidades de manipulación y transformación de ficheros/documentos. Una de las cosas más flexibles es el uso de transformadores que puden ser de dos tipos básicamente:
- Llamadas directas a algún comando o utilidad del sistema
- Desarrollar una clase Java que realice la transformación
Aquí vamos a ver la primera para utilizar la transformación de fotografías tomadas en formato RAW (o bruto como generalmente se llama) a TIFF y a JPEG. Actualmente hago fotos con Nikon y Olympus y me interesa pasar el formato NEF (por poner el de Nikon) a TIFF y a JPEG. ImageMagick puede hacerlo pero me ha dado problemas tanto en el resultado (no se pueden ver) como en la propia conversión por lo que voy a usar otra utilidad que existe para Linux, Mac OS X y Windows.
Esta utilidad se llama dcraw y podemos bajarla de http://www.cybercom.net/~dcoffin/dcraw/ para el sistema operativo que tengamos. En este caso voy a utilizar la que hay para Windows compilada con MingW desde la dirección http://www.rawness.es/dcraw/?lang=es
Una vez instalada o descomprimida en el directorio que nos guste obtendremos el programa ejecutable dcraw.exe
Bien, ahora a configurar el transformador…
Toda la configuración se basa en un bean llamado RuntimeExecutableContentTransformer para versiones anteriore a la 3.2 de Alfresco o RuntimeExecutableContentTransformeWorker para las siguientes. A su vez este bean contiene las siguientes propiedades principales:
- transformCommand: Define el comando y parámetros usando variables como ${source} y ${target}
- checkCommand: Chequea si la sintaxis es correcta y si ocurre un error también se puede definir con errorCodes. Cuando no está disponible el método getReliability devuelve 0:0 este método se usa para utilizar el transformador más eficiente en caso de que haya varios definidos que conviertan de la misma fuente al mismo destino.
- explicitTransformations establece el tipo MIME fuente y destino de forma explícita.
Creamos el fichero nef-tiff-jpeg-transform-context.xml:
Como vemos hay además otro bean definido de la clase ComplexContentTransformer, este sirve para realizar transformaciones a partir de otras, es decir, si no podemos transformar una imagen del formato NEF al formato JPEG pero si podemos realizar la transformación de NEF a TIFF y de TIFF a JPEG podemos configurarlo a través de este bean en el que hay que poner los transformadores y el mimetype intermedio de la transformación.
Ahora con dcraw.exe…
Esta utilidad de línea de comandos al igual que convert.exe de ImageMagick tiene la siguiente sintaxis:
C:Usersfernando.gonzalezworkspaceCommonMingW-release-orig-x32>dcraw.exe
Raw photo decoder “dcraw” v9.06
Set custom gamma curve (default = 2.222 4.5)
Podemos observar tres cosas:
- Podemos usar el modificador -i para chequear la utilidad, solo hay que usar una imagen y llamarla por ejemplo test.nef
- Debemos usar el modificador -T para pasar las imágenes a TIFF en lugar de PPM que es lo que hace por defecto
- Tenemos un problema, el resultado de la transformación es siempre el mismo fichero pero con la extensión cambiada, es decir, no podemos obligar a guardar el resultado en otro fichero (bueno, si, con el modificador -c que saca la salida por consola y capturandola con una redirección “>” pero esto no funciona bien)
Este script en formato BAT/CMD de Windows y llamado dcraw.cmd es el siguiente:
@ECHO OFF
Seguidamente vamos a crear las variables en el fichero de propiedades, en este caso utilizo el mismo alfresco-global.properties:
dcraw.home=C:/Users/fernando.gonzalez/workspace/Common/MingW-release-orig-x32
Y por último debemos declarar los tipos MIME (mimetypes) en el fichero mimetypes-extension-map.xml que está en /alfresco/extension/mimetype:
Para depurar podemos activar las siguientes líneas en Log4J (log4j.properties o custom-log4j.propeties en el extension):
log4j.logger.org.alfresco.repo.content.transform.TransformerDebug=debug