Jak vytvářet prezentace v Pythonu

Jak vytvářet prezentace v Pythonu

Aspose.Slides FOSS for Python vám umožňuje vytvářet prezentace PowerPoint kompletně v Pythonu bez závislosti na Microsoft Office. Tento průvodce ukazuje, jak vytvořit novou prezentaci, přidat snímky a tvary, formátovat text a uložit výsledek.

Průvodce krok za krokem

Krok 1: Nainstalujte balíček

Nainstalujte Aspose.Slides FOSS z PyPI. Je vyžadován Python 3.10 nebo novější.

pip install aspose-slides-foss

Ověřte instalaci:

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

Závislost lxml je nainstalována automaticky. Žádné další systémové balíčky nejsou vyžadovány.


Krok 2: Importujte požadované moduly

Importujte balíček a enum SaveFormat potřebný pro ukládání.

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

Všechny konstanty typu tvaru jsou umístěny v aspose.slides_foss.ShapeType. Všechny typy formátování (FillType, NullableBool) jsou také v aspose.slides_foss.


Krok 3: Vytvořit prezentaci

Použijte slides.Presentation() jako správce kontextu. Nová prezentace začíná jedním prázdným snímkem.

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)

Důležité: Vždy otevřete a použijte Presentation uvnitř bloku with. Neukládejte odkaz mimo výrok with; prostředky nebudou uvolněny správně.


Krok 4: Přístup k snímku

První snímek má index 0. Prázdná prezentace má přesně jeden snímek.

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)

Krok 5: Přidat tvar

Použijte slide.shapes.add_auto_shape() k přidání AutoShape. Parametry jsou (shape_type, x, y, width, height) všechny v bodech (1 bod = 1/72 palce; standardní snímek má 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)

Krok 6: Uložit prezentaci

Zavolejte prs.save(path, SaveFormat.PPTX) před tím, než blok with skončí. PPTX je jediný podporovaný výstupní formát.

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

Soubor je zapisován atomicky; pokud dojde k chybě před tímto voláním, není vytvořen žádný výstupní soubor.


Kompletní funkční příklad

Následující skript vytvoří dvousnímkovou prezentaci s titulním tvarem na prvním snímku a tabulkou na druhém.

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

Časté problémy a opravy

ResourceWarning: unclosed Presentation

Instanciujete Presentation bez bloku with. Vždy používejte:

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

AttributeError: __enter__

Pokud vidíte tuto chybu, zkontrolujte, že jste importovali aspose.slides_foss (ne aspose.slides). Název balíčku na PyPI je aspose-slides-foss a runtime import je aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX je člen výčtu, ne funkce. Použijte jej jako prs.save("file.pptx", SaveFormat.PPTX).


Často kladené otázky

Jaká je výchozí velikost snímku?

Nový Presentation() vytváří snímky ve standardní velikosti 10 × 7,5 palce (720 × 540 bodů). Změna velikosti snímku zatím není v této edici podporována.

Mohu přidat více než jeden snímek?

Ano. Zavolejte prs.slides.add_empty_slide(prs.layout_slides[0]) pro přidání prázdného snímku a přístup k němu podle indexu:

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

Mohu otevřít existující soubor a přidat snímky?

Ano:

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

Do jakých formátů mohu uložit?

Pouze SaveFormat.PPTX je podporováno. Export do PDF, HTML, SVG nebo obrázků není v této edici k dispozici.


Viz také

 Čeština