Formato DOCX: Dentro del estándar Open XML de Microsoft Word
DOCX (Word Open XML Document) es el formato de documento de Microsoft introducido con Office 2007, reemplazando al formato binario DOC. A diferencia de su predecesor, DOCX está basado en el estándar Office Open XML (OOXML) (ISO/IEC 29500), convirtiéndolo en un archivo ZIP que contiene ficheros XML, imágenes, fuentes y otros recursos.
DOCX es un archivo ZIP
Un fichero .docx es un fichero ZIP. Renómbralo a .zip y puedes abrirlo en cualquier gestor de ficheros:
document.docx/
├── [Content_Types].xml — declara tipos de contenido para todas las partes
├── _rels/.rels — relaciones raíz (apunta al documento)
├── word/
│ ├── document.xml — el contenido principal del documento
│ ├── styles.xml — todos los estilos con nombre (Título 1, Normal, etc.)
│ ├── settings.xml — configuración a nivel de documento
│ ├── theme/theme1.xml — tema de color, fuentes, efectos
│ ├── header1.xml — cabecera de primera página
│ ├── footer1.xml — pie de primera página
│ ├── numbering.xml — definiciones de numeración de listas
│ ├── footnotes.xml — texto de notas al pie
│ ├── comments.xml — comentarios de revisión
│ └── media/ — imágenes incrustadas
└── docProps/
├── app.xml — metadatos de aplicación
└── core.xml — propiedades del documento
La estructura de document.xml
Los elementos XML clave en word/document.xml:
<w:document>
<w:body>
<!-- Párrafo -->
<w:p>
<w:pPr> <!-- Propiedades del párrafo -->
<w:pStyle w:val="Titulo1"/> <!-- aplica Estilo con nombre -->
<w:jc w:val="center"/> <!-- alineación: left/center/right/both -->
</w:pPr>
<w:r> <!-- Ejecución (texto continuo con mismo formato) -->
<w:rPr> <!-- Propiedades de ejecución -->
<w:b/> <!-- negrita -->
<w:i/> <!-- cursiva -->
<w:color w:val="FF0000"/> <!-- texto rojo -->
<w:sz w:val="28"/> <!-- tamaño fuente 14pt (sz en medios puntos) -->
</w:rPr>
<w:t>Hola Mundo</w:t>
</w:r>
</w:p>
</w:body>
</w:document>
Sistema de estilos
DOCX usa un potente sistema de estilos en cascada en styles.xml:
Tipos de estilos:
- Estilos de párrafo: Se aplican a párrafos completos (
Título 1,Normal,Texto de cuerpo) - Estilos de carácter: Se aplican a ejecuciones en línea (
Énfasis intenso,Código) - Estilos de tabla: Se aplican a tablas (
Cuadrícula de tabla,Sombreado claro)
La herencia de estilos: cada estilo puede tener un padre basedOn. Título 1 está típicamente basado en Normal, heredando su fuente pero anulando tamaño y peso.
Imágenes en DOCX
Las imágenes se almacenan en word/media/ y se referencian mediante relaciones. Usan EMU (English Metric Units): 914.400 EMU = 1 pulgada = 72 puntos.
Control de cambios
La función de Control de cambios de DOCX almacena cada edición como marcado:
<w:ins w:id="1" w:author="Juan García" w:date="2024-01-15T10:30:00Z">
<w:r><w:t>texto insertado</w:t></w:r>
</w:ins>
<w:del w:id="2" w:author="Ana López" w:date="2024-01-15T11:00:00Z">
<w:r><w:delText>texto eliminado</w:delText></w:r>
</w:del>
Generación programática de DOCX
Python — python-docx
from docx import Document
from docx.shared import Inches, Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document()
doc.add_heading('Título del documento', level=1)
para = doc.add_paragraph()
run = para.add_run('Texto en negrita ')
run.bold = True
para.add_run('y texto normal.')
# Añadir tabla
tabla = doc.add_table(rows=3, cols=3)
tabla.style = 'Table Grid'
for i, fila in enumerate(tabla.rows):
for j, celda in enumerate(fila.cells):
celda.text = f'Fila {i}, Col {j}'
doc.add_picture('logo.png', width=Inches(2))
doc.save('salida.docx')
LibreOffice sin cabecera (conversión)
# Convertir DOCX a PDF
libreoffice --headless --convert-to pdf documento.docx
# Convertir DOCX a HTML
libreoffice --headless --convert-to html documento.docx
# Conversión por lotes de todos los DOCX en el directorio
libreoffice --headless --convert-to pdf --outdir ./salida/ *.docx
DOCX vs. ODT vs. PDF vs. RTF
| Formato | Editabilidad | Fidelidad | Especificación abierta |
|---|---|---|---|
| DOCX | Completa | Nativa MS Office | Sí (OOXML) |
| ODT | Completa | Mejor en LibreOffice | Sí (ODF) |
| Solo lectura* | Perfecta al píxel | Sí (PDF/A) | |
| RTF | Limitada | Buena | Sí |
Problemas comunes y soluciones
Problema: DOCX se ve diferente en otro ordenador Causa: Fuentes faltantes — DOCX almacena nombres de fuentes pero no los datos de fuente por defecto Solución: Incrustar fuentes antes de compartir (Archivo → Opciones → Guardar → marcar "Incrustar fuentes") o convertir a PDF
Problema: Control de cambios visible en la exportación a PDF
Solución: Revisar → Aceptar todos los cambios antes de guardar/exportar
Problema: Las imágenes cambian de posición al añadir texto Solución: Establecer imagen como "Posición fija en la página"
Resumen
La arquitectura ZIP+XML de DOCX lo convierte en el formato de documento principal más programable. Su estructura está bien documentada bajo ECMA-376 e ISO/IEC 29500, permitiendo la generación por docenas de bibliotecas en cada lenguaje de programación. Para el intercambio de documentos, DOCX es el estándar universal. Para archivo o impresión, convierte a PDF/A. Pero para máxima compatibilidad con la suite ofimática más instalada del mundo, DOCX sigue siendo el formato de documento definitivo.
Conversiones relacionadas
Conversiones de documento que siguen este tema: