Comprender el formato de archivo binario de Word MS-DOC

Resumen: obtenga información acerca del formato de archivo binario MS-DOC que se usa en los productos de Microsoft Word heredados, como las estructuras básicas y los conceptos clave para interactuar con él mediante programación.

Última modificación: viernes, 06 de enero de 2012

Hace referencia a: Office 2007 | Office 2010 | Open XML | Visual Studio Tools for Microsoft Office | Word | Word 2007 | Word 2010

En este artículo
Introducción al formato de archivo MS-DOC
Conclusión
Recursos adicionales

Se aplica a:   Microsoft Office Word 2003 | Microsoft Word 2002 | Microsoft Word 2000 | Microsoft Word 97

Publicado:   febrero de 2011

Proporcionado por:   Microsoft Corporation

Contenido

  • Introducción al formato de archivo MS-DOC

  • Componentes clave del formato de archivo MS-DOC

  • Extraer texto de archivos de Word

  • Conclusión

  • Recursos adicionales

En este artículo, se describen las estructuras y algunos procedimientos útiles para trabajar con los archivos MS-DOC. El artículo forma parte de una serie que da a conocer los formatos de archivos binarios que usan los productos de Microsoft Office. Estos artículos están pensados para usarse junto con los Office File Format Documents disponibles en MSDN.

Introducción al formato de archivo MS-DOC

Microsoft Office Word 2003, Microsoft Word 2002, Microsoft Word 2000 y Microsoft Word 97 usan el formato de archivo binario MS-DOC como formato de archivo predeterminado. Este formato de archivo se aplica a todos los archivos cuya extensión sea .doc o .dot. La unidad básica de datos de un documento de Word es un carácter, que puede incluir formato y otros caracteres no visibles, así como ANSI y UNICODE. Todos los datos del carácter residen en la secuencia del documento de Word. Al principio de esta secuencia hay una estructura denominada bloque de información del archivo (FIB), que contiene punteros a todos los datos del archivo.

Nota

El método recomendado para realizar la mayoría de las tareas de programación de Microsoft Word es usar los ensamblados de interoperabilidad principal de Word. Se trata de un conjunto de clases de .NET que proporciona un modelo de objeto completo para trabajar con Microsoft Word. En esta serie de artículos, se tratan únicamente escenarios avanzados como, por ejemplo, aquellos casos en los que Microsoft Word no está instalado.

Componentes clave del formato de archivo MS-DOC

A continuación, se indican las estructuras más importantes que debe conocer para trabajar con los archivos .doc.

  • 2.1.1 WordDocument Stream

    La secuencia del documento de Word es la secuencia principal de los archivos .doc; contiene todos los datos del archivo, salvo las tablas, que están almacenadas en la 1Table stream or 0Table stream.

    • File Information Block

      El bloque de información del archivo empieza en la posición de desplazamiento 0x00 de la secuencia del documento de Word. Especifica la ubicación del resto de los datos del archivo. Las ubicaciones se especifican con un par de enteros, de los cuales el primero indica la ubicación y el segundo, el tamaño. Estos enteros aparecen en subestructuras del bloque de información del archivo, como FibRgFcLcb97. Los nombres de ubicación tienen el prefijo fc. Los nombres de tamaño tienen el prefijo lcb.

    • Estructura Clx

      La estructura Clx es una matriz de 0 o más estructuras Prc, que contienen información de propiedades, seguida de una estructura Pcdt, que contiene una estructura PlcPcd.

  • Character

    Un carácter puede que sea de texto o que no sea de texto como, por ejemplo, una marca de párrafo o un delimitador de objeto. Su tamaño varía según se trate de un carácter ANSII, Unicode o de control. Los caracteres que son adyacentes en el documento no son necesariamente adyacentes en el archivo binario.

    • Character Position (CP)

      Una posición de carácter (CP) es un entero de 32 bits sin signo que proporciona la ubicación del índice de un carácter en el texto del documento.

    • Estructura Pcd

      Una estructura Pcd especifica la posición del texto en la secuencia del documento de Word junto con algunas propiedades del texto.

  • Plc

    Una estructura PLC es una matriz de CP, seguida de una matriz de elementos de datos. Las diferentes estructuras Plc tienen nombres y funciones diferentes, como la estructura Plcbkf, que se compone de marcadores y punteros a marcadores.

  • Estructura PlcPcd

    Una estructura PlcPcd es aquella estructura PLC que asigna una matriz de posiciones de caracteres a las estructuras Pcd. Esto es, asigna las posiciones de caracteres de la secuencia a los caracteres del texto del documento.

Extraer texto de archivos de Word

El algoritmo formal para recuperar texto está publicado en la sección 2.4.1 Retrieving Text de los documentos de especificaciones abiertas disponibles en MSDN. Además, se facilita un ejemplo de parte del proceso en la sección de ejemplos, 3.1 Example of a Clx. A continuación, hallará una versión simplificada del proceso.

Para extraer texto de un documento de Word

  1. Lea el archivo .doc en una secuencia de datos.

  2. Empiece por leer el bloque de información del archivo (FIB), en la posición de desplazamiento 0 de la secuencia del documento de Word. Para obtener más información, vea 2.5.15 How to read the FIB

  3. En el bloque de información del archivo, localice la estructura FibRgFcLcb97, que empieza en el byte 154 del FIB. Está compuesta por una serie de campos de 4 bytes.

  4. Lea el campo FibRgFcLcb97.fcClx situado en el byte 268 y el campo FibRgFcLcb97.lcbClx situado en el byte 272. Estos indican la ubicación de la posición de desplazamiento y el tamaño de la estructura Clx.

  5. Empiece a leer la estructura Clx de la secuencia de tabla en la posición de desplazamiento especificada por el campo FibRgFcLcb97.fcClx.

  6. En la estructura Clx, localice la estructura Pcdt, que se encuentra inmediatamente a continuación de la matriz .RgPrc de longitud variable de las estructuras Prc.

    Para cada miembro de la matriz:

    1. Lea el atributo .clxt, que es el byte 0 de la estructura Prc. Si .clxt = 0x02, ha encontrado la estructura Pcdt.

    2. Si .clxt = 0x01, lea los 2 bytes siguientes como un entero con signo y, a continuación, sáltese ese número de bytes hasta el siguiente miembro de la matriz.

  7. En la estructura Pcdt, localice la estructura PlcPcd, que empieza en el byte 5 de la Pcdt.

  8. Cargue la matriz PlcPcd.aPcd y la matriz PlcPcd.aCp. Los miembros de estas matrices se corresponden unos con otros por el valor del índice.

  9. Para cada estructura Pcd de PlcPcd.aPcd:

    1. Lea el valor del campo Pcd.Fc.fCompressed en el bit 46 de la estructura Pcd actual. Si es 0, la estructura Pcd hace referencia a un carácter Unicode de 16 bits. Si es 1, hace referencia a un carácter ANSI de 8 bits.

    2. Lea el valor de Pcd.Fc, que corresponde a los bytes 2 a 5 de la Pcd actual y el correspondiente valor de la CP.

      • Si es Unicode, el texto en la posición de carácter especificada por el valor de la CP actual empieza en una posición de desplazamiento igual al valor de Pcd.Fc en la secuencia del documento de Word y ocupa dos bytes por carácter.

      • Si es ANSI, el texto en la posición de carácter actual empieza en una posición de desplazamiento equivalente a la mitad del valor de Pcd.Fc y ocupa un byte por carácter.

      En cualquier caso, el número de caracteres especificado por la posición de carácter actual es igual al valor de la CP siguiente en la matriz menos el valor de la CP actual.

Conclusión

Este artículo es solo una muestra del formato MS-DOC. Con los recursos facilitados aquí, podrá recuperar datos fácilmente. Con más investigación, podrá empezar a recuperar información de formato y otros metadatos e incluso realizar operaciones de guardar.

Recursos adicionales

Para obtener más información, consulte los siguientes recursos: