Як завантажити презентації у 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: Збереження у режимі round‑trip
Після перегляду або зміни презентації збережіть її назад у 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‑частини зберігаються дослівно під час збереження з поверненням. Бібліотека не видалятиме жодного 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)