martes, 25 de marzo de 2025

Herramientas. Python-docx

Biblioteca python-docx (4). Formatos

En esta segunda entrada sobre el uso de funciones de formato en python-docx trataré una cuestión que se me antoja de suficiente interés como para no prescindir de ella en este breve recorrido por esta biblioteca: el sangrado del texto.


Este interés viene dado, como en los casos anteriores, por la frecuencia con se emplea en el trabajo con textos, especialmente el sangrado de la primera línea del párrafo. Por motivos de procedimiento dejaré esta cuestión para el final, ya que antes es conveniente explicar cómo se procede para sangrar el párrafo, algo que no es de uso frecuente, dicho sea de paso.

Suponiendo que sí lo sea, vamos a sangrar nuestro párrafo (no sólo la primera línea) por la izquierda (también podemos hacerlo por la derecha). Para ello, tras importar las funciones de trabajo con pulgadas (from docx.shared import Inches),  desarrollamos la siguiente secuencia:
  1. Escribimos el párrafo según el procedimiento común (parrafo1 = documento.add_paragraph(txt)), que en este caso emplea la variable txt como parámetro en lugar del texto del párrafo.
  2. Accedemos a la propiedad general de formato del párrafo (formateoIzq = parrafo1.paragraph_format) que referenciamos sobre la variable formateoIzq
  3. Y sobre esta variable accedemos a la propiedad left_indent a la que damos valor Inches(1.5) (en este caso) (formateoIzq.left_indent = Inches(1.5))
En realidad los pasos 2 y 3 son una forma de evitar la escritura de una instrucción larga, pero ésta es válida, y parrafo1.paragraph_format.left_indent = Inches(1.5) es equivalente a las dos anteriores.

Si quisiéramos que el sangrado fuera a la derecha, sería suficiente con sustituir la propiedad left_indent por right_indent. Así de sencillo.

De modo similar, si en lugar de sangrar todo el párrafo sólo quisiéramos sangrar la primera línea, recurriríamos a la propiedad first_line_indent como alternativa a cualquiera de las dos anteriores. Por aclararlo mejor: el tercer paso del proceso se concretaría como formateoL1.first_line_indent = Inches(1) (por claridad del código en el scritp, sustituyo la variable formateoIzq por formateoL1). El valor numérico pasado como parámetro a Inches() puede ser positivo (como en este caso) o negativo (vg. Inches(-1)), lo que modifica el aspecto del párrafo, pero no supone ninguna modificación de la lógica de script.

Documento. Este es el enlace al script explicado en esta entrada; y con esto doy por finalizada la serie de entradas dedicadas a la biblioteca python-docx. Aunque no pretendo haber agotado todo lo que hay que aprender sobre ella, sí creo haber tratado los temas de mayor interés práctico.

No hay comentarios:

Publicar un comentario

Comenta esta entrada