Hoe Presentaties in Python te Maken
Aspose.Slides FOSS for Python stelt je in staat om PowerPoint‑presentaties volledig in Python te maken zonder afhankelijkheid van Microsoft Office. Deze gids laat zien hoe je een nieuwe presentatie maakt, dia’s en vormen toevoegt, tekst opmaakt en het resultaat opslaat.
Stapsgewijze handleiding
Stap 1: Installeer het pakket
Installeer Aspose.Slides FOSS van PyPI. Python 3.10 of hoger is vereist.
pip install aspose-slides-fossControleer de installatie:
import aspose.slides_foss as slides
print("Aspose.Slides FOSS ready")De lxml‑afhankelijkheid wordt automatisch geïnstalleerd. Er zijn geen andere systeempakketten vereist.
Stap 2: Importeer de vereiste modules
Importeer het pakket en de SaveFormat‑enum die nodig is voor het opslaan.
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
from aspose.slides_foss import ShapeTypeAlle shape-type constanten bevinden zich in aspose.slides_foss.ShapeType. Alle opmaaktypes (FillType, NullableBool) staan ook in aspose.slides_foss.
Stap 3: Maak een presentatie
Gebruik slides.Presentation() als contextmanager. Een nieuwe presentatie begint met één lege dia.
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
print(f"Slides in new presentation: {len(prs.slides)}")
# work with prs inside this block
prs.save("output.pptx", SaveFormat.PPTX)Belangrijk: Open en gebruik Presentation altijd binnen een with blok. Sla geen referentie op buiten de with verklaring; bronnen worden niet correct vrijgegeven.
Stap 4: Toegang tot een dia
De eerste dia bevindt zich op index 0. Een lege presentatie heeft precies één dia.
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
slide = prs.slides[0] # zero-based index
print(f"Slide at index 0: {slide}")
prs.save("output.pptx", SaveFormat.PPTX)Stap 5: Voeg een vorm toe
Gebruik slide.shapes.add_auto_shape() om een AutoShape toe te voegen. De parameters zijn (shape_type, x, y, width, height), allemaal in punten (1 punt = 1/72 inch; standaard dia is 720 × 540 pt).
import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
slide = prs.slides[0]
# Rectangle at (50, 50) with 400 wide and 120 tall
shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 400, 120)
# Attach a text frame
shape.add_text_frame("Hello from Aspose.Slides FOSS!")
prs.save("with-shape.pptx", SaveFormat.PPTX)Stap 6: Sla de presentatie op
Roep prs.save(path, SaveFormat.PPTX) aan voordat het with‑blok wordt verlaten. PPTX is het enige ondersteunde uitvoerformaat.
prs.save("result.pptx", SaveFormat.PPTX)Het bestand wordt atomair geschreven; als er een fout optreedt vóór deze aanroep, wordt er geen uitvoerbestand aangemaakt.
Volledig Werkend Voorbeeld
Het volgende script maakt een presentatie met twee dia’s, met een titelvorm op de eerste dia en een tabel op de tweede.
import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
# --- Slide 1: title shape ---
slide1 = prs.slides[0]
title = slide1.shapes.add_auto_shape(ShapeType.RECTANGLE, 40, 40, 640, 80)
tf = title.add_text_frame("Q1 Results: Executive Summary")
fmt = tf.paragraphs[0].portions[0].portion_format
fmt.font_height = 32
fmt.font_bold = NullableBool.TRUE
fmt.fill_format.fill_type = FillType.SOLID
fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)
# --- Slide 2: table ---
prs.slides.add_empty_slide(prs.layout_slides[0])
slide2 = prs.slides[1]
table = slide2.shapes.add_table(40, 40, [200.0, 120.0, 120.0], [40.0, 40.0, 40.0])
headers = ["Region", "Revenue", "Growth"]
data = [
["North", "$1.2M", "+8%"],
["South", "$0.9M", "+4%"],
]
for col, header in enumerate(headers):
table.rows[0][col].text_frame.text = header
for row_idx, row_data in enumerate(data):
for col, cell_text in enumerate(row_data):
table.rows[row_idx + 1][col].text_frame.text = cell_text
prs.save("q1-results.pptx", SaveFormat.PPTX)
print("Saved q1-results.pptx")Veelvoorkomende problemen en oplossingen
ResourceWarning: unclosed Presentation
U instantiëert Presentation zonder een with‑blok. Gebruik altijd:
with slides.Presentation() as prs:
...AttributeError: __enter__
Als je deze fout ziet, controleer dan of je aspose.slides_foss hebt geïmporteerd (niet aspose.slides). De pakketnaam op PyPI is aspose-slides-foss en de runtime‑import is aspose.slides_foss.
TypeError: SaveFormat.PPTX is not callable
SaveFormat.PPTX is een enum‑lid, geen functie. Gebruik het als prs.save("file.pptx", SaveFormat.PPTX).
Veelgestelde vragen
Wat is de standaard dia-grootte?
Een nieuwe Presentation() maakt dia’s aan in de standaardgrootte van 10 × 7.5 inch (720 × 540 punt). Het wijzigen van de dia‑grootte wordt in deze editie nog niet ondersteund.
Kan ik meer dan één dia toevoegen?
Ja. Roep prs.slides.add_empty_slide(prs.layout_slides[0]) aan om een lege dia toe te voegen en er via index toegang toe te krijgen:
prs.slides.add_empty_slide(prs.layout_slides[0])
slide2 = prs.slides[1]Kan ik een bestaand bestand openen en dia’s toevoegen?
Ja:
with slides.Presentation("existing.pptx") as prs:
prs.slides.add_empty_slide(prs.layout_slides[0])
prs.save("existing.pptx", SaveFormat.PPTX)Naar welke formaten kan ik opslaan?
Alleen SaveFormat.PPTX wordt ondersteund. Exporteren naar PDF, HTML, SVG of afbeeldingen is niet beschikbaar in deze editie.