Tutorial: Crear presentaciones electrónicas usando Python

Microsoft PowerPoint es un programa fácil de usar y una poderosa herramienta para hacer una presentación.

Ya sea que tu presentación necesite un toque visual, herramientas de colaboración, fácil acceso o la capacidad de compartir información más allá de la reunión inicial, PowerPoint es una buena opción.

Incluso puede ayudar a reducir la ansiedad al hablar al alejar los ojos del hablante y dirigirlos hacia la pantalla.

Ahora bien, Power Point es la herramienta por excelencia para crear presentaciones ya que cuenta con múltiples opciones para llevarlas a cabo, pero como en todo a veces es necesario automatizar estas tareas ya sea para acelerarlas o simplemente añadir un valor agregado.

Python es un lenguaje de programación poderoso y adaptable a muchas áreas, en este caso Python permite el desarrollo de presentación de power point, y en el siguiente tutorial se te de mostrará.

Introducción 

python-pptx es una biblioteca de Python para crear y actualizar archivos de PowerPoint (.pptx).

Un uso típico sería generar una presentación de PowerPoint personalizada a partir del contenido de la base de datos, que se puede descargar haciendo clic en un enlace en una aplicación web. 

Varios desarrolladores lo han utilizado para automatizar la producción de informes de estado de ingeniería listos para la presentación basados ​​en la información contenida en su sistema de gestión del trabajo. 

También podría usarse para realizar actualizaciones masivas a una biblioteca de presentaciones o simplemente para automatizar la producción de una diapositiva o dos que serían tediosas de hacer a mano.

Instalando 

python-pptx está alojado en PyPI, por lo que la instalación con pip es simple:

pip install python-pptx

python-pptx depende del lxml y de Pillow, la biblioteca de imágenes de Python (PIL). Las funciones de gráficos dependen de XlsxWriter. Ambos, pipy easy_install se encargarán de satisfacer estas dependencias por ti.

Actualmente, python-pptx requiere Python 2.7, 3.3, 3.4 o 3.6. Las pruebas se ejecutan contra 2.7 y 3.6 en Travis CI.

Los siguientes ejemplos fueron tomados de la documentación oficial. Los derechos pertenecen a su autor original.

Ejemplos

Hello World

../_images/hello-world.png

from pptx import Presentation

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]

title.text = "Hello, World!"
subtitle.text = "python-pptx was here!"

prs.save('test.pptx')

Este ejemplo genera una presentación “Hello World” usando una única página. Tanto “title” como “subtitle” permiten añadir un titulo y subtitulo a la pagina actual. Save permite guardar el archivo para ser visualizado.

Ejemplo de diapositia 

../_images/bullet-slide.png
from pptx import Presentation

prs = Presentation()
bullet_slide_layout = prs.slide_layouts[1]

slide = prs.slides.add_slide(bullet_slide_layout)
shapes = slide.shapes

title_shape = shapes.title
body_shape = shapes.placeholders[1]

title_shape.text = 'Adding a Bullet Slide'

tf = body_shape.text_frame
tf.text = 'Find the bullet slide layout'

p = tf.add_paragraph()
p.text = 'Use _TextFrame.text for first bullet'
p.level = 1

p = tf.add_paragraph()
p.text = 'Use _TextFrame.add_paragraph() for subsequent bullets'
p.level = 2

prs.save('test.pptx')

Podemos añadir texto a las diapositivas, aunque hay que tener cuidado ya que no es posible añadir texto en todas las formas. Se toma la jerarquía de niveles para poder añadir texto o párrafos dentro de la diapositiva actual.

Imagenes

../_images/add-picture.png
from pptx import Presentation
from pptx.util import Inches

img_path = 'monty-truth.png'

prs = Presentation()
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)

left = top = Inches(1)
pic = slide.shapes.add_picture(img_path, left, top)

left = Inches(5)
height = Inches(5.5)
pic = slide.shapes.add_picture(img_path, left, top, height=height)

prs.save('test.pptx')

Una presentación no seria una presentación si no lleva imágenes. Python-pptx permite añadir imágenes a la diapositiva actual fácilmente.

Formas

../_images/add-shape.png
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.util import Inches

prs = Presentation()
title_only_slide_layout = prs.slide_layouts[5]
slide = prs.slides.add_slide(title_only_slide_layout)
shapes = slide.shapes

shapes.title.text = 'Adding an AutoShape'

left = Inches(0.93)  # 0.93" centers this overall set of shapes
top = Inches(3.0)
width = Inches(1.75)
height = Inches(1.0)

shape = shapes.add_shape(MSO_SHAPE.PENTAGON, left, top, width, height)
shape.text = 'Step 1'

left = left + width - Inches(0.4)
width = Inches(2.0)  # chevrons need more width for visual balance

for n in range(2, 6):
    shape = shapes.add_shape(MSO_SHAPE.CHEVRON, left, top, width, height)
    shape.text = 'Step %d' % n
    left = left + width - Inches(0.4)

prs.save('test.pptx')

Las formas también son de utilidad, por ejemplo, al añadir rectángulos, flechas o círculos es posible explicar de mejor manera la informacion presentada.

Tablas

../_images/add-table.png
from pptx import Presentation
from pptx.util import Inches

prs = Presentation()
title_only_slide_layout = prs.slide_layouts[5]
slide = prs.slides.add_slide(title_only_slide_layout)
shapes = slide.shapes

shapes.title.text = 'Adding a Table'

rows = cols = 2
left = top = Inches(2.0)
width = Inches(6.0)
height = Inches(0.8)

table = shapes.add_table(rows, cols, left, top, width, height).table

# set column widths
table.columns[0].width = Inches(2.0)
table.columns[1].width = Inches(4.0)

# write column headings
table.cell(0, 0).text = 'Foo'
table.cell(0, 1).text = 'Bar'

# write body cells
table.cell(1, 0).text = 'Baz'
table.cell(1, 1).text = 'Qux'

prs.save('test.pptx')

Las tablas también son un aspecto fundamental ya que permiten mostrar informacion cuantificable de manera organizada y entendible.

Conclusiones

Si bien, sabemos que Power Point es la herramienta por excelencia para crear presentaciones, usar Python para automatizar este proceso puede suponer una gran ventaja tanto como de tiempo como de flexibilidad.

Por ejemplo, en los sectores de análisis de datos crear presentaciones automatizadas de toda la informacion analizada representa un gran ahorro de tiempo cuando se supone que son procesos que se repiten constantemente.


También te podría gustar...

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.