Hvordan lage presentasjoner i Python

Hvordan lage presentasjoner i Python

Aspose.Slides FOSS for Python lar deg lage PowerPoint‑presentasjoner helt i Python uten avhengighet av Microsoft Office. Denne guiden viser hvordan du oppretter en ny presentasjon, legger til lysbilder og former, formaterer tekst og lagrer resultatet.

Steg-for-steg Guide

Steg 1: Installer pakken

Installer Aspose.Slides FOSS fra PyPI. Python 3.10 eller nyere kreves.

pip install aspose-slides-foss

Bekreft installasjonen:

import aspose.slides_foss as slides
print("Aspose.Slides FOSS ready")

lxml-avhengigheten installeres automatisk. Ingen andre systempakker er påkrevd.


Trinn 2: Importer de nødvendige modulene

Importer pakken og SaveFormat-enumet som trengs for lagring.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
from aspose.slides_foss import ShapeType

Alle shape-type konstanter finnes i aspose.slides_foss.ShapeType. Alle formateringstyper (FillType, NullableBool) er også i aspose.slides_foss.


Trinn 3: Opprett en presentasjon

Bruk slides.Presentation() som en kontekstbehandler. En ny presentasjon starter med ett tomt lysbilde.

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)

Viktig: Åpne og bruk alltid Presentation inne i en with blokk. Ikke lagre en referanse utenfor with‑setningen; ressurser vil ikke bli frigitt korrekt.


Steg 4: Åpne et lysbilde

Den første lysbildet er på indeks 0. En tom presentasjon har nøyaktig ett lysbilde.

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)

Steg 5: Legg til en form

Bruk slide.shapes.add_auto_shape() for å legge til en AutoShape. Parameterne er (shape_type, x, y, width, height) alle i punkter (1 punkt = 1/72 tomme; standard lysbilde er 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)

Trinn 6: Lagre presentasjonen

Kall prs.save(path, SaveFormat.PPTX) før with-blokken avsluttes. PPTX er det eneste støttede output-formatet.

prs.save("result.pptx", SaveFormat.PPTX)

Filen skrives atomisk; hvis en feil oppstår før dette kallet, opprettes ingen output‑fil.


Fullstendig fungerende eksempel

Det følgende skriptet oppretter en presentasjon med to lysbilder, med en tittelform på det første lysbildet og en tabell på det andre.

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")

Vanlige problemer og løsninger

ResourceWarning: unclosed Presentation

Du instansierer Presentation uten en with‑blokk. Bruk alltid:

with slides.Presentation() as prs:
    ...

AttributeError: __enter__

Hvis du ser denne feilen, sjekk at du importerte aspose.slides_foss (ikke aspose.slides). Pakkenavnet på PyPI er aspose-slides-foss og runtime‑importen er aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX er et enum‑medlem, ikke en funksjon. Bruk den som prs.save("file.pptx", SaveFormat.PPTX).


Ofte stilte spørsmål

Hva er standard lysbildestørrelse?

En ny Presentation() oppretter lysbilder i standardstørrelsen 10 × 7,5 tommer (720 × 540 punkt). Å endre lysbildestørrelsen støttes ikke ennå i denne utgaven.

Kan jeg legge til flere lysbilder?

Ja. Kall prs.slides.add_empty_slide(prs.layout_slides[0]) for å legge til et tomt lysbilde og få tilgang til det ved indeks:

prs.slides.add_empty_slide(prs.layout_slides[0])
slide2 = prs.slides[1]

Kan jeg åpne en eksisterende fil og legge til lysbilder?

Ja:

with slides.Presentation("existing.pptx") as prs:
    prs.slides.add_empty_slide(prs.layout_slides[0])
    prs.save("existing.pptx", SaveFormat.PPTX)

Hvilke formater kan jeg lagre til?

Kun SaveFormat.PPTX støttes. Eksport til PDF, HTML, SVG eller bilder er ikke tilgjengelig i denne utgaven.


Se også

 Norsk