Inleiding
Deze gids toont hoe je PowerPoint presentaties programmatisch kunt maken, wijzigen en opslaan in Python met behulp van Aspose.Slides FOSS. De bibliotheek stelt je in staat om dia’s vanaf nul te bouwen, dia’s toe te voegen en opnieuw te ordenen, ze te vullen met vormen, tabellen en opgemaakte tekst, en het resultaat op te slaan als PPTX. Alle verwerking gebeurt in pure Python zonder afhankelijkheid van Microsoft Office of enige externe binary.
De bibliotheek is beschikbaar op PyPI als aspose-slides-foss onder de MIT-licentie. Installeer deze met pip, importeer hem, en begin binnen enkele regels code presentaties te bouwen. Of je nu rapportgeneratie automatiseert, een slide-deck-pipeline bouwt, of presentatie-output in een webapplicatie embedde, de API dekt het volledige spectrum: slide-collecties, master-/layout-dia’s, vorm-collecties, tekstkaders, vulformaten en exportopties.
Deze post loopt de kernfunctionaliteiten voor presentatiemanagement door — de klassen en methoden die je het meest zult gebruiken bij het werken met dia’s in Python.
Wat er inbegrepen is
Levenscyclus van de presentatie
De Presentation klasse is het toegangspunt. Maak een nieuw deck, bewerk de inhoud, en sla op als PPTX. Gebruik Presentation als een contextmanager met with om bestands-handles automatisch vrij te geven.
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)
Dia-collectie bewerkingen
SlideCollection stelt je in staat om dia’s toe te voegen, in te voegen, te klonen, te verwijderen en opnieuw te rangschikken. len(pres.slides) geeft de huidige telling weer na elke wijziging.
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)
Vormen en AutoShapes
Voeg rechthoeken, ellipsen, driehoeken en andere geometrische vormen toe aan elke dia via ShapeCollection.add_auto_shape(). Elke vorm biedt positie-, grootte-, rotatie- en vul-eigenschappen die behouden blijven gedurende opslaan/herladen cycli.
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
Tabellen
Maak gegevenstabellen met ShapeCollection.add_table(), stel celtekst in via TextFrame, voeg cellen samen en pas randopmaak toe. Rijhoogtes en kolombreedtes komen overeen met de waarden die je aan de constructor doorgeeft.
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
Master- en lay-outdia’s
Elke presentatie heeft een hiërarchie van masterdia’s en lay-outdia’s. Toegang tot deze via Presentation.masters en Presentation.layout_slides om consistente opmaak toe te passen over je hele deck.
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)
Documenteigenschappen
Lees en schrijf ingebouwde metadata zoals titel, auteur en onderwerp via het DocumentProperties object. Stel een van deze eigenschappen in voordat je save() aanroept — ze worden ingebed in de PPTX-metadata en zijn leesbaar voor downstream-tools:
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)
Snelstart
Voer de volgende pip-opdracht uit om Aspose.Slides FOSS voor Python te installeren vanaf PyPI:
pip install aspose-slides-fossHet volgende voorbeeld maakt een presentatie met een titelvorm, een gegevenstabel en een opvulling, en slaat deze vervolgens op als 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)
Ondersteunde formaten
| Formaat | Extensie | Lezen | Schrijven |
|---|---|---|---|
| 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 |
Opmerking: PPTX lezen en schrijven zijn volledig geïmplementeerd. Andere SaveFormat waarden (PPT, ODP, PDF, enz.) zijn gepland voor toekomstige releases; ze doorgeven aan save() produceert momenteel PPTX-uitvoer.
Open Source & Licenties
Aspose.Slides FOSS voor Python wordt uitgebracht onder de MIT-licentie. Je kunt het gebruiken in persoonlijke, academische en commerciële projecten zonder beperkingen. De broncode is beschikbaar op GitHub en het pakket is gepubliceerd op PyPI.