Как да заредим презентации в Python
Aspose.Slides FOSS for Python lets you open any .pptx файл, прегледайте съдържанието му и или го запазете обратно като PPTX, или извлечете данни от него. Това ръководство обхваща отваряне на файл, обхождане на слайдове, четене на текста във форми и запазване с обратен процес.
Ръководство стъпка по стъпка
Стъпка 1: Инсталирайте пакета
pip install aspose-slides-fossСтъпка 2: Отворете съществуваща презентация
Предайте пътя към файла на slides.Presentation(). Използвайте контекстния мениджър, за да осигурите почистване.
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)Неизвестните XML части в изходния файл се запазват дословно: библиотеката никога не премахва съдържание, което все още не разбира.
Стъпка 3: Прегледайте слайдовете
Обхождайте всички слайдове и отпечатайте техния индекс:
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")Стъпка 4: Прочетете текста във форма
Обхождайте формите и четете текста от формите, които имат 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}")Стъпка 5: Прочетете свойствата на документа
Достъп до основните свойства на документа от 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}")Стъпка 6: Запис с обратен процес
След като прегледате или промените презентацията, запишете я обратно в PPTX:
prs.save("output.pptx", SaveFormat.PPTX)Записването в различен път създава нов файл. Записването в същия път презаписва оригинала.
Чести проблеми и решения
FileNotFoundError
Проверете, че пътят към .pptx файлът е правилен спрямо работната директория. Използвайте pathlib.Path за надеждна конструкция на пътя:
from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
...Exception: File format is not supported
Библиотеката поддържа .pptx (Office Open XML) само. Наследени .ppt (binary PowerPoint 97–2003) файловете не се поддържат.
Формите нямат атрибут text_frame
Някои форми (Connectors, PictureFrames, GroupShapes) нямат text_frame. Защита с hasattr(shape, "text_frame") and shape.text_frame is not None преди достъп до текста.
Често задавани въпроси
Запазва ли зареждането цялото оригинално съдържание?
Да. Неизвестните XML части се запазват дословно при запазване с round‑trip. Библиотеката няма да премахне XML съдържание, което все още не разбира.
Мога ли да заредя защитен с парола PPTX?
Презентации, защитени с парола (шифрирани), не се поддържат в това издание.
Мога ли да извлека вградени изображения?
Достъп до колекцията от изображения: prs.images връща ImageCollection. Всяко изображение има content_type и bytes свойство за четене на необработените данни на изображението.
Поддържа ли се зареждане от поток в паметта?
Зареждане директно от io.BytesIO не е достъпно в текущия API. Запишете байтовете във временен файл първо:
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)