OpenAjax

OpenAjax Alliance es una orgonización formada por la gente que “manda” en el mundo Ajax (Dojo, Eclipse, Zimbra, Tibco, IBM, Oracle, etc).

Su principal objetivo es acelerar la adopción de Ajax entre los desarrolladores y salvar las diferencias de integración entre los distintos frameworks Ajax disponibles, dentro del marco del software libre y de los estándares.

Para cumplir estos objetivos se ha comenzado desarrollando el OpeAjax Hub, cuyo propósito es mejorar la integración e interoperabilidad entre los distintos frameworks. El código está disponible en SourceForge.

Nuevo libro sobre accesibilidad web

Claudio Segovia, experto en accesibilidad de la Fundación Sidar, ha liberado (bajo licencia Creative Commons) un maravilloso borrador de más de 200 páginas con el título Accesibilidad en Internet.

Imprescindible para todos los que trabajan por una web más accesible.

Adobe MARS: XML para reemplazar el formato PDF

Adobe MARS es un formato XML diseñado para ofrecer las mismas funcionalidades que PDF, pero con las ventajas del uso de estándares abiertos como XML, SVG o PNG.

El fichero que definirá MARS será un tipo de fichero comprimido al estilo del OpenDocument en el que se estructurán todas las definiciones necesarias. Además, hará uso de OpenType, el nuevo formato multiplataforma de definición de fuentes desarrollado por Adobe y Microsoft.

Esta no es una idea a futuro de Adobe, sino que ya es una realidad. En la página de Adobe Labs podemos encontrar ya los siguientes recursos:

  • Manual de referencia sobre el uso de MARS
  • Los Schemas en formato RelaxNG que definen la estructura de los documentos XML
  • Ejemplos
  • Descarga del plugin necesario para su utilización en Acrobat 8.0

Integrando la firma digital de documentos PDF con Apache Cocoon

Apache Cocoon es un framework de publicación XML. En Cocoon se define un origen XML (generator), una transformación XSL opcional (transformer) y se obtiene un documento (serializer) en el formato deseado (PDF, RTF, XHTML, Postscript, Excel, etc). Cocooon nos permite olvidarnos de los procesos de transformación de documentos XML, de forma que sólo tenemos que definir los distintos pasos por los que pasará nuestra información origen XML (pipelines).

En esta dirección podemos encontrar información adicional sobre Cocoon.

En un reciente artículo sobre firma digital de documentos PDF con iText veíamos cómo realizar la firma aislada de documentos PDF.
Para los que utilicen Cocoon, existe una forma de poder firmar los documentos PDF que se generen dinámicamente como resultado de una transformación. El proceso pasa por implementar nuestro propio serializer.

Lo que vamos a hacer es implementar una clase que herede de FOPSerializer (encargada de la generación de PDF) y, antes de que se emita el PDF como salida, pasar esta información por el proceso de firma descrito en el artículo anterior.

El resultado es la clase PDFSignSerializer.java que nos permite implementar el proceso.
Esta clase, al ser un nuevo serializer, debe ser definida en el fichero de configuración de Cocoon (sitemap.xmap):

<map:serializer logger="sitemap.serializer.fo2spdf" mime-type="application/pdf" name="fo2spdf"
src="org.apache.cocoon.serialization.PDFSignSerializer"/>

Y luego, ya podemos utilizarla en cualquier pipeline:

<map:match pattern="kk">
<map:generate src="samples/hello-world/content/hello.xml" />
<map:transform src="samples/hello-world/style/xsl/page2fo.xsl" />
<map:serialize type="fo2spdf" />
</map:match>

Firmando documentos PDF con iText

iText es una librería Java gratuita para la generación de documentos PDF de forma dinámica. Es una de las más utilizadas por su simplicidad, disponibilidad de ejemplos y documentación (incluso se ha publicado un libro) y funcionalidades.

A parte del soporte para la generación de documentos PDF, ofrece una serie de características adicionales que pueden resultar muy interesantes:

Respecto a la firma digital, es posible firmar un documento PDF existente con un certificado X509 en formato PKCS#12 (en explorer se exportan como .PFX) de forma directa:


KeyStore ks = KeyStore.getInstance("pkcs12");
ks.load(new FileInputStream("certificado.pfx"), "mi_password".toCharArray());
String alias = (String) ks.aliases().nextElement();
PrivateKey key = (PrivateKey) ks.getKey(alias, "mi_password".toCharArray());
Certificate[] chain = ks.getCertificateChain(alias);
PdfReader reader = new PdfReader(”documento.pdf”);
FileOutputStream fout = new FileOutputStream(”documento_firmado.pdf”);
PdfStamper stp = PdfStamper.createSignature(reader, fout, ‘\0′, new File(”/tmp”));
PdfSignatureAppearance sap = stp.getSignatureAppearance();
sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);
sap.setReason(”Prueba de firma digital con iText”);
sap.setLocation(”Spain”);
sap.setContact(”Ricardo Borillo”);
stp.close();

Hay disponible una descripción más amplia de todo el proceso en esta dirección.

Así es como se vería el documento firmado cundo lo visualizamos con el Acrobat Reader:

Y la información de la firma en la pestaña vertical de la parte izquierda (Firmas):

Extendiendo MediaWiki

MediaWiki, producto que se creó originalmente para dar soporte a la Wikipedia, es uno de los entornos colaborativos de edición de contenidos más utilizados en el mundo del software libre.

Cuando usas de forma intensiva un producto de Wiki como este, se plantean ciertas necesidades a las que MediaWiki no da soporte, como por ejemplo la generación de una versión PDF de uno de los documentos.

Es por ello, que resulta interesante ver como algunos usuarios han dado posibles soluciones a esta carencia. Así, en el blog Megaroot, encontramos el siguiente artículo que nos explica como poder generar PDFs de una forma cómoda y accesible desde el mismo interfaz de MediaWiki, mediante el desarrollo de una extensión.

Esta extensión hace un uso de otras iniciativas como WikiPDF o html2fpdf.

« Entradas anterioresEntradas siguientes »