Python içinde Sunumlar Nasıl Oluşturulur

Python içinde Sunumlar Nasıl Oluşturulur

Aspose.Slides FOSS for Python lets you create PowerPoint presentations entirely in Python with no dependency on Microsoft Office. This guide shows how to create a new presentation, add slides and shapes, format text, and save the result.

Adım Adım Kılavuz

Adım 1: Paketi Yükleyin

Aspose.Slides FOSS’u PyPI’dan kurun. Python 3.10 veya daha yeni bir sürüm gereklidir.

pip install aspose-slides-foss

Kurulumu doğrulayın:

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

Bu lxml bağımlılık otomatik olarak kurulur. Başka sistem paketi gerekmez.


Adım 2: Gerekli Modülleri İçe Aktarın

Paketi ve SaveFormat kaydetmek için gereken enum.

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

Tüm şekil-tipi sabitleri şurada bulunur aspose.slides_foss.ShapeType. Tüm biçimlendirme tipleri (FillType, NullableBool) da şurada aspose.slides_foss.


Adım 3: Bir Sunum Oluşturun

Kullan slides.Presentation() bağlam yöneticisi olarak. Yeni bir sunum bir boş slaytla başlar.

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)

Önemli: Her zaman aç ve kullan Presentation içinde bir with blok. Referansı bloğun dışına saklamayın with ifade; kaynaklar doğru şekilde serbest bırakılmayacaktır.


Adım 4: Bir Slayta Erişin

İlk slayt indeks 0’da bulunur. Boş bir sunum tam olarak bir slayta sahiptir.

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)

Adım 5: Bir Şekil Ekleyin

Kullan slide.shapes.add_auto_shape() bir AutoShape eklemek için. Parametreler şunlardır (shape_type, x, y, width, height) tüm ölçü birimi puan cinsinden (1 puan = 1/72 inç; standart slayt 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)

Adım 6: Sunumu Kaydedin

Çağrı prs.save(path, SaveFormat.PPTX) öncesinde with blok çıkış yapar. PPTX tek desteklenen çıktı formatıdır.

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

Dosya atomik olarak yazılır; bu çağrıdan önce bir hata oluşursa, hiçbir çıktı dosyası oluşturulmaz.


Tam Çalışan Örnek

Aşağıdaki betik, ilk slaytta bir başlık şekli ve ikinci slaytta bir tablo içeren iki slaytlık bir sunum oluşturur.

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

Yaygın Sorunlar ve Çözümler

ResourceWarning: unclosed Presentation

Bir örnek oluşturuyorsunuz Presentation bir … olmadan with blok. Her zaman şunu kullanın:

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

AttributeError: __enter__

Bu hatayı görürseniz, şunu içe aktardığınızdan emin olun: aspose.slides_foss (değil aspose.slides). PyPI üzerindeki paket adı aspose-slides-foss ve çalışma zamanındaki içe aktarma şudur: aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX bir enum üyesidir, fonksiyon değildir. Şu şekilde kullanın: prs.save("file.pptx", SaveFormat.PPTX).


Sık Sorulan Sorular

Varsayılan slayt boyutu nedir?

Yeni bir Presentation() standart 10 × 7,5 inç (720 × 540 nokta) boyutunda slaytlar oluşturur. Bu sürümde slayt boyutunu değiştirmek henüz desteklenmemektedir.

Birden fazla slayt ekleyebilir miyim?

Evet. Çağırın prs.slides.add_empty_slide(prs.layout_slides[0]) boş bir slayt eklemek ve ona indeksle erişmek için:

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

Varolan bir dosyayı açıp slayt ekleyebilir miyim?

Evet:

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

Hangi formatlarda kaydedebilirim?

Yalnızca SaveFormat.PPTX desteklenir. PDF, HTML, SVG veya görüntülere dışa aktarma bu sürümde mevcut değildir.


Ayrıca Bakınız

 Türkçe