jueves, 9 de julio de 2015

Generar RTF desde nuestras aplicaciones

A veces puede ser muy interesante que nuestra aplicación genere un fichero RTF que luego los usuarios puedan editar con Word o Writer para modificar, imprimir, convertir a diferentes formatos como PDF, docx, odt...

La buena noticia es que los RTF son simplemente ficheros de texto con unas etiquetas especiales que indican el formato del texto, de las tablas, de las imágenes y de los demás elementos. Así que no es difícil hacer un programa que vaya escribiendo este tipo de etiquetas combinadas con el texto a incluir.

La mala noticia es que los distintos editores con capacidad para crear un RTF tienen distintas opiniones acerca de lo que debe incluirse en un documento con Formato de Texto Enriquecido (que es lo que significa más o menos la sigla RTF, Rich Text Format).

Si creáis un RTF sencillo con cualquier editor ofimático, tendréis algo así (en este caso, parto de un RTF creado con LibreOffice Writer 4.4 en Ubuntu):


Fig. 1. Un RTF sencillo

Y ahora, si en vez de hacer doble clic sobre el icono del fichero, lo abrís con un editor de texto podréis ver algo similar a esto:

Fig. 2. Las tripas del RTF (versión LibreOffice Writer)

Si abrimos ese mismo RTF con Word 2003 y lo volvemos a guardar, vemos que Word le ha metido bastante más información

Fig. 3. El RTF después de pasar por las manos de MS-Word, el cual ha decidido añadirle muuuuuuchas cosas

Por último, lo he abierto y vuelto a guardar con WordPad (de Windows 7) y veo que es el que deja el RTF más limpito, con aparentemente la menor cantidad de información.

Fig. 4. El RTF exportado con WordPad (Windows 7)

Como es lógico, los tres ficheros difieren bastante en el tamaño, ya que la versión de Word es la que más información lleva (8 KB) y la versión de WordPad es la más pequeña (225 bytes).

Como curiosidad, decir que he generado un RTF a mano con el editor de texto y dejándolo en algo tan reducido como esto


Fig. 5. Un RTF superreducido generado a mano

Aquí podéis ver los tamaños de las distintas versiones


Fig. 6. A menos paja, menos tamaño

Ojo, el caso manual tiene "trampa", pues me he saltado algunas partes que son necesarias según la especificación oficial del formato RTF, pero como los programas prefieren rellenar la falta de información con valores predefinidos antes que morir dando un error miserablemente, podemos abrir este documento hecho a mano sin problemas en Word 2003, WordPad y LibreOffice 4.3 (tanto versiones de Windows como de Ubuntu), que ya se encargan ellos de asignar valores por defecto a todo lo que no se especifique (fuentes de texto, colores...). Eso sí, cada uno de estos programas le ha puesto un tipo de letra y un tamaño a su antojo, ya que el documento creado de forma manual no indica nada respecto a las fuentes a utilizar, así que los valores por defecto juegan aquí un papel fundamental.

En próximas entradas entraré en los detalles de los RTFs, a fin de que nuestras aplicaciones puedan generar este tipo de ficheros sin demasiadas complicaciones.

Por de pronto, los impacientes pueden ir empezando a leerse la especificación oficial:

http://www.biblioscape.com/rtf15_spec.htm

Para mí ha sido la Biblia durante unos cuantos días.

No hay comentarios:

Publicar un comentario