martes, 18 de marzo de 2025

Herramientas. Python-pptx

python-pptx (3). Texto

Una vez creado el índice, entramos en la parte de la creación de la presentación en la que vamos dotando a ésta de contenido, y como ya dijimos, el contenido se va a concretar bien como contenido textual, bien como contenido gráfico. Vamos a tratar en esta entrada sobre cómo crear diapositivas con contenido textual.



Antes de empezar, deberemos importar dos utilidades de la biblioteca para que el script pueda acceder a las funciones necesarias (from pptx.util import Inches, Pt). Hecho esto, tenemos que crear una nueva diapositiva, que en este caso se ajusta al formato 6 (diapositiva vacía) (diapo3 =mi_presenta.slide_layouts[6]) y añadirla a la lista de diapositivas de la presentación (diapo3 = mi_presenta.slides.add_slide(diapo3)).

Viene a continuación un proceso no exento de cierta complicación: el dimensionado de lo que será el objeto text box (caja de texto), lo cual se realiza mediante una función (add_textbox()) que requiere cuatro parámetros numéricos, dos de posicionamiento (izquierda -left- y arriba -top- respecto a la diapositiva) y dos de dimensión (ancho -width- y alto -height- de la forma) todas ellas expresadas en pulgadas (1 pulgada = 2,54 cm), lo que hace que sea conveniente declarar previamente cuatro variables a las que asignar los valores respectivos (vg width = height = Inches(8)). Dado que ajuste del text box a la diapositiva es una cuestión de gustos, vas a tener que probar valores hasta que encuentres el que mejor se ajuste a tus necesidades, tarea esta que te puede llevar tiempo. Una vez que lo consigas puedes añadir la forma text box a la diapositiva (txBox = diapo3.shapes.add_textbox(left, top, width, height)) y definir la variable que te va  a permitir acceder a ella para escribir el contenido que desees (tf = txBox.text_frame)

Aunque no es prescriptivo, igual que te aconsejo trabajar con valores numéricos asociados a variables, también te aconsejo que utilices variables string para contener los textos que desees escribir; esto te facilitará la tarea siguiente (vg. titulo = "Los cuentos y los niños").

Y llega la hora de escribir el contenido en nuestro text box. Empezaremos por ponerle un título (tf.text = titulo), que no deja se ser un texto especial (por cómo es tratado y por la función que tiene) y paso seguido escribiremos el contenido, esto es, el párrafo o los párrafos que contendrá nuestro text box. Este proceso tiene dos fases:
  • Añadimos el párrafo al text box (p0 = tf.add_paragraph())
  • Y le damos contenido (p1.text = parrafo1)
  • Después podemos añadir formato al texto (p1.font.size = Pt(10)), aunque no siempre es necesario ni funciona como sería de esperar (eso también).
Cuando el texto (los párrafos) tiene una longitud que se ajusta al tamaño del text box y a la diapositiva como lienzo, no hace falta más ajustes; pero cuando la extensión del párrafo supera esas dimensiones se produce un efecto de desbordamiento que altera la visualización del contenido. En este caso es necesario llamar a una función que reajusta el texto al ancho del text box, generando automáticamente las líneas de texto necesarias, lo que evita que parte del texto que oculto. Esto es lo que hace la última línea de instrucciones de esta sección del script: tf.fit_text().

Documento: En este enlace puedes acceder al script que incluye el código explicado en esta entrada.


No hay comentarios:

Publicar un comentario

Comenta esta entrada