Cómo cargar presentaciones en Python
Aspose.Slides FOSS for Python lets you open any .pptx archivo, inspeccione su contenido y guárdelo de nuevo en PPTX o extraiga datos de él. Esta guía cubre abrir un archivo, iterar diapositivas, leer el texto de las formas y volver a guardar.
Guía paso a paso
Paso 1: Instalar el paquete
pip install aspose-slides-fossPaso 2: Abrir una presentación existente
Pase la ruta del archivo a slides.Presentation(). Utilice el administrador de contexto para garantizar la limpieza.
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
with slides.Presentation("input.pptx") as prs:
print(f"Slide count: {len(prs.slides)}")
prs.save("output.pptx", SaveFormat.PPTX)Las partes XML desconocidas en el archivo fuente se conservan literalmente: la biblioteca nunca elimina contenido que aún no entiende.
Paso 3: Inspeccionar diapositivas
Itere sobre todas las diapositivas e imprima su índice:
import aspose.slides_foss as slides
with slides.Presentation("deck.pptx") as prs:
for i, slide in enumerate(prs.slides):
shape_count = len(slide.shapes)
print(f"Slide {i}: {shape_count} shapes")Paso 4: Leer el texto de la forma
Itere sobre las formas y lea el texto de las formas que tienen un TextFrame:
import aspose.slides_foss as slides
with slides.Presentation("deck.pptx") as prs:
for slide in prs.slides:
for shape in slide.shapes:
if hasattr(shape, "text_frame") and shape.text_frame is not None:
text = shape.text_frame.text
if text.strip():
print(f" Shape text: {text!r}")Paso 5: Leer propiedades del documento
Acceda a las propiedades principales del documento desde prs.document_properties:
import aspose.slides_foss as slides
with slides.Presentation("deck.pptx") as prs:
props = prs.document_properties
print(f"Title: {props.title}")
print(f"Author: {props.author}")
print(f"Subject: {props.subject}")Paso 6: Guardado de ida y vuelta
Después de inspeccionar o modificar la presentación, guárdela de nuevo en PPTX:
prs.save("output.pptx", SaveFormat.PPTX)Guardar en una ruta diferente crea un archivo nuevo. Guardar en la misma ruta sobrescribe el original.
Problemas comunes y soluciones
FileNotFoundError
Verifique que la ruta al .pptx archivo sea correcta en relación con el directorio de trabajo. Use pathlib.Path para una construcción de rutas robusta:
from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
...Exception: File format is not supported
La biblioteca admite .pptx (Office Open XML) solo. Legado .ppt (binary PowerPoint 97–2003) files are not supported.
Las formas no tienen el atributo text_frame
Algunas formas (Connectors, PictureFrames, GroupShapes) no tienen un text_frame. Proteja con hasattr(shape, "text_frame") and shape.text_frame is not None antes de acceder al texto.
Preguntas frecuentes
¿La carga preserva todo el contenido original?
Sí. Las partes XML desconocidas se conservan literalmente en el guardado de ida y vuelta. La biblioteca no eliminará ningún contenido XML que aún no entienda.
¿Puedo cargar un PPTX protegido con contraseña?
Las presentaciones protegidas con contraseña (cifradas) no son compatibles en esta edición.
¿Puedo extraer imágenes incrustadas?
Acceda a la colección de imágenes: prs.images devuelve el ImageCollection. Cada imagen tiene un content_type y un bytes propiedad para leer los datos de imagen sin procesar.
¿Se admite la carga desde un flujo en memoria?
Cargando directamente desde io.BytesIO no está expuesto en la API actual. Escriba los bytes en un archivo temporal primero:
import tempfile, os
import aspose.slides_foss as slides
with tempfile.NamedTemporaryFile(suffix=".pptx", delete=False) as tmp:
tmp.write(pptx_bytes)
tmp_path = tmp.name
try:
with slides.Presentation(tmp_path) as prs:
print(f"Slides: {len(prs.slides)}")
finally:
os.unlink(tmp_path)