Wprowadzenie
Ten przewodnik pokazuje, jak programowo tworzyć, modyfikować i zapisywać prezentacje PowerPoint w Python przy użyciu Aspose.Slides FOSS. Biblioteka pozwala budować slajdy od podstaw, dodawać i zmieniać ich kolejność, wypełniać je kształtami, tabelami i sformatowanym tekstem oraz zapisywać wynik do formatu PPTX. Całe przetwarzanie odbywa się w czystym Python bez zależności od Microsoft Office ani żadnych zewnętrznych plików binarnych.
Biblioteka jest dostępna na PyPI jako aspose-slides-foss na licencji MIT. Zainstaluj ją za pomocą pip, zaimportuj i zacznij budować prezentacje w kilku linijkach kodu. Niezależnie od tego, czy automatyzujesz generowanie raportów, tworzysz pipeline slajdów, czy osadzasz wynik prezentacji w aplikacji webowej, API obejmuje pełne spektrum: kolekcje slajdów, slajdy master/layout, kolekcje kształtów, ramki tekstowe, formaty wypełnień i opcje eksportu.
Ten wpis przechodzi przez podstawowe możliwości zarządzania prezentacjami — klasy i metody, z których będziesz najczęściej korzystać przy pracy ze slajdami w Python.
Co zawiera
Cykl życia prezentacji
Klasa Presentation jest punktem wejścia. Utwórz nowy zestaw, manipuluj jego zawartością i zapisz do PPTX. Użyj Presentation jako menedżera kontekstu wraz z with, aby automatycznie zwalniać uchwyty plików.
import io
from aspose.slides_foss import Presentation
from aspose.slides_foss.export import SaveFormat
with Presentation() as pres:
# A new presentation starts with one blank slide
print("Slides:", len(pres.slides)) # 1
# Save to a file
pres.save("output.pptx", SaveFormat.PPTX)
# Or save to a stream
buf = io.BytesIO()
pres.save(buf, SaveFormat.PPTX)
Operacje kolekcji slajdów
SlideCollection umożliwia dodawanie, wstawianie, klonowanie, usuwanie i zmienianie kolejności slajdów. len(pres.slides) odzwierciedla bieżącą liczbę po każdej zmianie.
from aspose.slides_foss import Presentation, ShapeType
with Presentation() as pres:
layout = pres.layout_slides[0]
# Add a blank slide using the first layout
pres.slides.add_empty_slide(layout)
# Insert at a specific position
pres.slides.insert_empty_slide(1, layout)
# Clone an existing slide (shapes are copied)
pres.slides[0].shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 200, 100)
pres.slides.add_clone(pres.slides[0])
print("Total slides:", len(pres.slides)) # 4
# Remove by index
pres.slides.remove_at(3)
Kształty i AutoShapes
Dodaj prostokąty, elipsy, trójkąty i inne kształty geometryczne do dowolnego slajdu za pomocą ShapeCollection.add_auto_shape(). Każdy kształt udostępnia właściwości pozycji, rozmiaru, obrotu i wypełnienia, które utrzymują się pomiędzy zapisami/odczytami.
from aspose.slides_foss import Presentation, ShapeType
with Presentation() as pres:
slide = pres.slides[0]
slide.shapes.clear()
rect = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 150)
rect.rotation = 15
ellipse = slide.shapes.add_auto_shape(ShapeType.ELLIPSE, 400, 50, 200, 200)
# Reorder z-index
slide.shapes.reorder(0, ellipse)
print("Front shape:", slide.shapes[0].shape_type) # ELLIPSE
Tabele
Twórz tabele danych za pomocą ShapeCollection.add_table(), ustawiaj tekst komórek poprzez TextFrame, scalaj komórki i stosuj formatowanie obramowań. Wysokości wierszy i szerokości kolumn odpowiadają wartościom przekazywanym do konstruktora.
from aspose.slides_foss import Presentation, FillType
from aspose.slides_foss.drawing import Color
with Presentation() as pres:
slide = pres.slides[0]
slide.shapes.clear()
table = slide.shapes.add_table(50, 50, [150, 150, 150], [40, 40, 40])
# Merge two cells in the second row
table.merge_cells(table.rows[1][0], table.rows[1][1], False)
# Style the header row with a bottom border
for col_idx in range(len(table.columns)):
fmt = table.rows[0][col_idx].cell_format
fmt.border_bottom.fill_format.fill_type = FillType.SOLID
fmt.border_bottom.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 0, 0)
fmt.border_bottom.width = 2
Slajdy master i układu
Każda prezentacja ma hierarchię slajdów master i slajdów układu. Uzyskaj do nich dostęp za pomocą Presentation.masters i Presentation.layout_slides, aby zastosować spójną formatację w całej prezentacji.
from aspose.slides_foss import Presentation
with Presentation() as pres:
master = pres.masters[0]
print("Master layouts:", len(master.layout_slides))
# Pick a layout by type
from aspose.slides_foss import SlideLayoutType
title_layout = pres.layout_slides.get_by_type(SlideLayoutType.TITLE)
if title_layout:
pres.slides.add_empty_slide(title_layout)
Właściwości dokumentu
Odczytuj i zapisuj wbudowane metadane, takie jak tytuł, autor i temat, za pomocą obiektu DocumentProperties. Ustaw dowolną z tych właściwości przed wywołaniem save() — są one osadzone w metadanych PPTX i czytelne dla narzędzi downstream:
from aspose.slides_foss import Presentation
from aspose.slides_foss.export import SaveFormat
with Presentation() as pres:
props = pres.document_properties
props.title = "Quarterly Report"
props.author = "Engineering"
props.subject = "Q1 2026 Results"
pres.save("report.pptx", SaveFormat.PPTX)
Szybki start
Uruchom następujące polecenie pip, aby zainstalować Aspose.Slides FOSS dla Python z PyPI:
pip install aspose-slides-fossPoniższy przykład tworzy prezentację z kształtem tytułu, tabelą danych i wypełnieniem, a następnie zapisuje ją jako PPTX:
from aspose.slides_foss import Presentation, ShapeType, FillType, NullableBool
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat
with Presentation() as pres:
slide = pres.slides[0]
slide.shapes.clear()
# Add a title shape
title = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 30, 860, 80)
tf = title.add_text_frame("Quarterly Report")
tf.paragraphs[0].portions[0].portion_format.font_bold = NullableBool.TRUE
tf.paragraphs[0].portions[0].portion_format.font_height = 28
# Add a data table
table = slide.shapes.add_table(50, 150, [200, 200, 200], [40, 40, 40])
headers = ["Region", "Revenue", "Growth"]
for i, h in enumerate(headers):
table.rows[0][i].text_frame.text = h
# Fill the title shape background
title.fill_format.fill_type = FillType.SOLID
title.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 51, 102)
# Save as PPTX
pres.save("report.pptx", SaveFormat.PPTX)
Obsługiwane formaty
| Format | Rozszerzenie | Odczyt | Zapis |
|---|---|---|---|
| PPTX | .pptx | ✓ | ✓ |
| PPT | .ppt | — | Planned |
| PPSX | .ppsx | — | Planned |
| PPTM | .pptm | — | Planned |
| POTX | .potx | — | Planned |
| ODP | .odp | — | Planned |
| — | Planned | ||
| HTML | .html | — | Planned |
| HTML5 | .html | — | Planned |
| TIFF | .tiff | — | Planned |
| GIF | .gif | — | Planned |
| XPS | .xps | — | Planned |
| FODP | .fodp | — | Planned |
| MD | .md | — | Planned |
Uwaga: Odczyt i zapis PPTX są w pełni zaimplementowane. Inne SaveFormat wartości (PPT, ODP, PDF, itp.) są planowane w przyszłych wydaniach; przekazywanie ich do save() obecnie generuje wyjście PPTX.
Open Source i licencjonowanie
Aspose.Slides FOSS dla Python jest udostępniony na licencji MIT. Możesz go używać w projektach osobistych, akademickich i komercyjnych bez ograniczeń. Kod źródłowy jest dostępny na GitHub, a pakiet został opublikowany na PyPI.