Escribiendo ficheros docx de Word con Python. Capítulo I

En este tutorial vamos a aprender cómo escribir documentos con formato *docx* usados por Microsoft Word y también otros paquetes ofimáticos como LibreOffice u OpenOffice. El curso se basará en la biblioteca python-docx por lo que habrá que instalarla para poder seguir el tutorial.

Instalación

No voy a entrar en mucho detalle, todo lo que vamos a usar en este tutorial son cosas de la biblioteca estándar y la biblioteca python-docx. Lo ideal es que crees un entorno virtual y dentro de ese entorno virtual instales python-docx. Si tienes dudas usa los comentarios y te intentaré ayudar.

Por otro lado, también necesitaremos un procesador de texto. Si no tienes acceso a Microsoft Word puedes usar uno libre como LibreOffice u OpenOffice. Los ejemplos los mostraré usando LibreOffice.

Formato docx

Vamos a empezar por la parte más árida, entender lo que es un fichero con formato docx:

Un documento con fomato docx no es más que un fichero comprimido siguiendo la Open Packaging Convention. Esta convención de empaquetado sirve para comprimir ficheros xml conjuntamente con ficheros de otros tipos. Además, dentro del fichero docx, el fichero comprimido usando la Open Packaging Convention, se incluye una especificación con las relaciones entre los archivos xml y los archivos de otros tipos que están contenidos dentro del fichero comprimido.

Vamos a crear un fichero docx vacío con la biblioteca python-docx, que es la que usaremos a lo largo de todo este tutorial:

  • Importamos la biblioteca:
  • Creamos una instancia de Document:
  • Y usamos el método save para guardar un fichero docx vacío que se llamará “new.docx”:

[De momento no te preocupes por el código, hablaremos de los detalles más adelante].

Si lo quieres abrir puedes usar Libreoffice, Openoffice, Microsoft Word,… Puedes abrirlo con libreoffice desde dentro del notebook o desde una consola de IPython usando el comando siguiente o desde tu explorador de ficheros haciendo doble click sobre el fichero new.docx.:

Y verás un documento en blanco. Parece un documento vacío y sin información pero se puede descomprimir puesto que es un fichero comprimido. Lo voy a descomprimir usando, por ejemplo, el comando unzip en linux, en una carpeta que se llame docx_unzipped (también lo puedes descomprimir usando el programa winzip o el programa 7zip…). El siguiente comando lo ejecuto desde dentro del notebook o desde una consola de IPython (si lo quieres ejecutar directamente en la consola simplemente quita el carácter ! inicial):

Lo anterior mostrará algo parecido a lo siguiente en pantalla:

Si miras el contenido de esa carpeta verás algo parecido a lo siguiente (nuevamente, uso el comando tree desde dentro del Notebook o de la consola de IPython, si quieres ejecutarlo en la shell elimina el ! inicial):

El anterior comando mostrará el siguiente resultado en pantalla:

Los ficheros xml contenidos en el fichero docx siguen una serie de formatos para crear documentos electrónicos como documentos de procesamiento de texto, hojas de cálculo o presentaciones. El formato que siguen se conoce como Office Open XML o OOXML y es el formato que se usa en Microsoft Word, Excel o Powerpoint.

No vamos a entrar mucho más en ello puesto que ya tienes muchos artículos en la red que lo explican en mucho más detalle.

¿Cómo se estructura un documento?

Aquí se va a intentar explicar cómo un humano ve un documento, un fichero .docx, abstrayéndonos un poco de toda la estructura y lenguajes de marcado (xml). Es decir, vamos a hablar sobre cómo nos muestra el formato .docx un cliente como Libreoffice, Openoffice, Microsoft Word u otros. Estos clientes (procesadores de texto) leen el formato .docx y lo representan en pantalla simulando lo que llevamos siglos usando, hojas de papel con nuestras anotaciones.

[Esto no pretende ser muy exhaustivo ni pretende ser 100% riguroso. Por tanto, puede que me permita alguna licencia al introducir alguna explicación o concepto].

Nuestro manuscrito (el documento)

El documento es donde escribimos nuestras anotaciones. Normalmente dispone de un cuerpo, que es donde escribimos el texto principal, y puede tener o no un cabecero y/o un pie de página.

El documento en formato electrónico puede contener también cierta metainformación que no es visible en el documento como la fecha de creación del documento, la fecha de la última modificación, el título del documento, el autor o autores del mismo,…

El cuerpo

El cuerpo del documento está compuesto de párrafos. Los párrafos normalmente contienen texto pero también pueden contener tablas, imágenes, saltos de página,…

Es decir, el párrafo es el bloque fundamental de información que estará formada por otras partes más pequeñas de información…

Los párrafos

Los párrafos están compuestos de pequeñas piezas de caracteres. Una o más de estas piezas formarán un párrafo. Más abajo vamos a ver lo que son estas piezas, que llamaremos runs.

Los runs

En Word existe un concepto que se llama run. No se me ocurre una buena forma de traducirlo así que lo dejamos así a lo largo de todo el tutorial. Una forma sencilla de entender lo que es un run sería verlo como una secuencia de caracteres que comparten el mismo formato.

Por ejemplo, en el siguiente texto (los corchetes solo aparecen para diferenciar los runs):

“[El perro de ][San Roque ][NO][ tiene rabo.]”

Tendríamos 4 runs:

  • El primero sería “El perro de “, que es texto normal, por decirlo de forma sencilla.
  • El segundo sería “San Roque “, que es texto en cursiva.
  • El tercero sería “NO“, que es texto en negrita.
  • El cuarto sería ” tiene rabo.”, que es texto normal de nuevo.

Cabecero y pie de página

El cabecero y pie de página normalmente se usan para añadir información extra al documento que suele repetirse entre las distintas páginas, exceptuando alguna poca información que sí va cambiando entre páginas como el número de página en el que nos encontramos. No es necesario que un documento tenga un cabecero y/o pie de página visible.

Resumen

Esta primera parte nos ha servido para entender un poco mejor a lo que nos vamos a enfrentar. Nos ha permitdo entender que un documento .docx es un realidad una serie de ficheros comprimidos y que la estructura visual del documento se compone de una serie de partes que se asemejan a lo que venimos usando desde hace siglos, el manuscrito hecho en papel.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

eighty eight − eighty three =