Inicio Proyectos Librería NRtfTree Documentación NRtfTree Introducción al formato RTF

Introducción al formato RTF

por sgoliver

Esta entrada forma parte de una serie de artículos dedicados a NRtfTree, la librería .NET para tratamiento de documentos RTF, entre los cuales podrás encontrar una descripción detallada de la librería, documentación técnica, ejemplos y tutoriales de uso que pueden ser de tu interés. No olvides consultar la página principal de NRtfTree para más información.

El formato RTF (Rich Text Format) nace como un método de codificación de texto con formato e imágenes fácil de transferir entre distintos dispositivos, sistemas y aplicaciones. Con la especificación de este formato se pretende que un documento creado en un sistema determinado pueda consultarse y manipularse en cualquier otro contexto diferente sin las barreras impuestas por otros formatos propietarios.

Esta capacidad surge del hecho de que internamente un documento RTF se almacena como texto plano, en el que se incluye tanto la información del documento en sí como una serie de metadatos que informan del formato del documento y del resto de propiedades adicionales aportadas por RTF.

Un documento RTF se compone de cuatro elementos básicos: texto sin formato, palabras de control (también llamadas palabras clave), símbolos de control y grupos.

Una palabra de control es un comando RTF que se utilizará para dar información acerca del formato del documento o cualquier otro tipo de información adicional sobre el texto. Las palabras de control tienen la siguiente forma:

\PalabraControl<Delimitador>

donde PalabraControl puede ser cualquier combinación de letras en minúscula y <Delimitador> puede ser uno de los siguientes:

  1. Un espacio en blanco. En este caso éste se considerará parte de la palabra de control, es decir, no formará parte del texto del documento.
  2. Un dígito o un guión («-«). Esto significará que existe un parámetro numérico que acompaña a la palabra de control. Este parámetro terminará al encontrarse un espacio o cualquier caracter no alfanumérico.
  3. Cualquier caracter no alfanumérco. En este caso este caracter no se considerará parte de la palabra de control.

Un símbolo de control se utilizará, entre otras cosas, para representar determinados caracteres especiales y tendrá la siguiente forma:

\SimboloControl<Parametro>

donde SimboloControl puede ser cualquier caracter no alfanumérico y <Parametro> (opcional) será cualquier valor alfanumérico. Además, es importante remarcar que los símbolos de control no van separados por ningún tipo de delimitador. Un ejemplo de símbolo de control puede ser \~ que representa un espacio indivisible.

Un grupo consiste en un conjunto de texto, palabras y símbolos de control encerrados entre llaves (‘{‘ y ‘}’) de forma que todo el texto del documento contenido en un grupo comparte las mismas propiedades. Además, existen grupos especiales que forman parte de la cabecera de un documento RTF y contienen información sobre las fuentes, colores y estilos, entre otros, contenidos en el documento.

Veamos un ejemplo de documento RTF donde aparecen todos los elementos comentados:

{\rtf1\ansi\ansicpg1252\deff0\deflang3082
{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fmodern\fprq1\fcharset0 Courier New;}}
{\colortbl ;\red255\green0\blue0;\red0\green0\blue128;}
\viewkind4\uc1\pard\b\f0\fs20 NRTFTree v0.1\b0 es una librer\’eda \cf1\b\fs24 escrita en C# \cf0\b0\fs20 para el \cf2\i\fs24 tratamiento estructurado\fs20 \cf0\i0 de\f1\fs40 documentos RTF\f0\fs20 .\par}

El código RTF mostrado corresponde al texto con formato siguiente:

NRTFTree v0.1 es una librería escrita en C# para el tratamiento estructurado de documentos RTF.

La estructura general de un documento fuente RTF es la siguiente:

‘{‘ <Cabecera> <Contenido del documento> ‘}’

Por su parte, la cabecera del documento tendrá la siguiente estructura:

<Cabecera> –> \rtf <charset> \deff ? <fonttbl> <filetbl>? <colortbl>? <stylesheet>? <listtables>? <revtbl>?

con los siguientes significados:

<charset> : Tabla de caracteres utilizada en la codificación del documento.

\deff : Fuente por defecto.

<fonttbl>: Tabla de fuentes. Aquí se incluirán todas las fuentes utilizadas en el documento.

<filetbl>: Tabla de ficheros. Utilizada sólo cuando el documento incluye subdocumentos.

<colortbl>: Tabla de colores. Aquí se incluirán todos los colores de fuente utilizados en el documento.

<stylesheet>: Tabla de estilos. Aquí se incluirán los estilos utilizados en el documento.

<listtables>: Tablas de listas. Donde se incluye información sobre las listas, numeradas o no, contenidas en el documento.

<revtbl>: Tabla de revisiones. Que contendrá información sobre las modificaciones realizadas en el documento.

De todos estos elementos, tan sólo el conjunto de caracteres y la tabla de fuentes son obligatorios, y normalmente, tan sólo éstos junto con la tabla de colores serán los que aparezcan en la mayoría de documentos.

En el primer ejemplo podemos ver estas dos tablas habituales. Por un lado la tabla de fuentes donde se definen dos fuentes distintas Arial y Courier New:

{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fmodern\fprq1\fcharset0 Courier New;}}

Y por otro lado tembién tenemos la tabla de colores, donde definimos tres colores, uno predeterminado que depende de la aplicación que trate el documento (indicado por el primer punto y coma) y otros dos definidos por sus valores RGB:

{\colortbl ;\red255\green0\blue0;\red0\green0\blue128;}

Por último, justo a continuación de la cabecera del documento, comienza el contenido del documento en sí, que irá acompañado de las palabras y símbolos de control que den información sobre su formato. Así por ejemplo, el fragmento siguiente:

\b\f0\fs20 NRTFTree v0.1

indica que el texto «NRTFTree v0.1» se escribirá en negrita (\b), con la fuente número 0 de la tabla de fuentes (\f0) y con tamaño de fuente 20 (\fs20).

Para una información más detallada sobre la especificación del formato RTF se puede descargar la documentación oficial desde el siguiente enlace: [Especificación RTF versión 1.8]

Dejar un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. Aceptar Más Información

Política de Privacidad y Cookies