Как да заредим презентации в Python
Aspose.Slides FOSS for Python ви позволява да отворите всеки .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 (двоичен PowerPoint 97–2003) файлове не се поддържат.
Формите нямат атрибут text_frame
Някои форми (Connectors, PictureFrames, GroupShapes) нямат text_frame. Защитете се с hasattr(shape, "text_frame") and shape.text_frame is not None преди да достъпите текста.
Често задавани въпроси
Запазва ли зареждането цялото оригинално съдържание?
Да. Неизвестните XML части се запазват дословно при запазване в обратен процес. Библиотеката няма да премахне никакво 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)