Hur man skapar presentationer i Python

Hur man skapar presentationer i Python

Aspose.Slides FOSS for Python låter dig skapa PowerPoint-presentationer helt i Python utan beroende av Microsoft Office. Denna guide visar hur du skapar en ny presentation, lägger till bilder och former, formaterar text och sparar resultatet.

Steg-för-steg-guide

Steg 1: Installera paketet

Installera Aspose.Slides FOSS från PyPI. Python 3.10 eller senare krävs.

pip install aspose-slides-foss

Verifiera installationen:

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

lxml-beroendet installeras automatiskt. Inga andra systempaket krävs.


Steg 2: Importera de nödvändiga modulerna

Importera paketet och SaveFormat enum som behövs för att spara.

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

Alla shape-typkonstanter finns i aspose.slides_foss.ShapeType. Alla formateringstyper (FillType, NullableBool) finns också i aspose.slides_foss.


Steg 3: Skapa en presentation

Använd slides.Presentation() som en kontext‑hanterare. En ny presentation startar med en tom bild.

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)

Viktigt: Öppna och använd Presentation alltid inom ett with‑block. Lagra inte en referens utanför with‑uttrycket; resurser kommer inte att frigöras korrekt.


Steg 4: Åtkomst till en bild

Den första bilden är på index 0. En tom presentation har exakt en bild.

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: Lägg till en form

Använd slide.shapes.add_auto_shape() för att lägga till en AutoShape. Parametrarna är (shape_type, x, y, width, height) alla i punkter (1 punkt = 1/72 tum; standardbild är 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)

Steg 6: Spara presentationen

Anropa prs.save(path, SaveFormat.PPTX) innan with‑blocket avslutas. PPTX är det enda stödda utdataformatet.

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

Filen skrivs atomärt; om ett fel uppstår innan detta anrop, skapas ingen utdatafil.


Fullständigt fungerande exempel

Följande skript skapar en tvåbildspresentation med en titelform på den första bilden och en tabell på den andra.

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

Vanliga problem och lösningar

ResourceWarning: unclosed Presentation

Du instansierar Presentation utan ett with‑block. Använd alltid:

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

AttributeError: __enter__

Om du ser det här felet, kontrollera att du importerade aspose.slides_foss (inte aspose.slides). Paketnamnet på PyPI är aspose-slides-foss och runtime‑importen är aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX är en enum-medlem, inte en funktion. Använd den som prs.save("file.pptx", SaveFormat.PPTX).


Vanliga frågor

Vad är standardstorleken på bilden?

En ny Presentation() skapar bilder i standardstorleken 10 × 7,5 tum (720 × 540 punkter). Att ändra bildstorleken stöds ännu inte i den här utgåvan.

Kan jag lägga till mer än en slide?

Ja. Anropa prs.slides.add_empty_slide(prs.layout_slides[0]) för att lägga till en tom bild och komma åt den via index:

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

Kan jag öppna en befintlig fil och lägga till bilder?

Ja:

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

Vilka format kan jag spara till?

Endast SaveFormat.PPTX stöds. Export till PDF, HTML, SVG eller bilder är inte tillgängligt i den här utgåvan.


Se även

 Svenska