Як завантажити презентації у 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) не підтримуються.
У Shapes немає атрибуту 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)