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-fossOvěř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 ShapeTypeVš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.