Python'da Sunumlar Nasıl Oluşturulur

Python'da Sunumlar Nasıl Oluşturulur

Aspose.Slides FOSS for Python, Microsoft Office’a bağımlı olmadan tamamen Python’da PowerPoint sunumları oluşturmanıza olanak tanır. Bu kılavuz, yeni bir sunum oluşturmayı, slayt ve şekiller eklemeyi, metni biçimlendirmeyi ve sonucu kaydetmeyi gösterir.

Adım Adım Kılavuz

Adım 1: Paketi Yükleyin

Aspose.Slides FOSS’ı 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")

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


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

Kaydetme için gereken paketi ve SaveFormat enum’ı içe aktarın.

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

Tüm şekil‑tipi sabitleri aspose.slides_foss.ShapeType içinde bulunur. Tüm biçimlendirme tipleri (FillType, NullableBool) ayrıca aspose.slides_foss içinde yer alır.


Adım 3: Sunum Oluştur

slides.Presentation()‘yi bağlam yöneticisi olarak kullanın. 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: Presentation öğesini her zaman bir with bloğu içinde açın ve kullanın. with ifadesinin dışına bir referans saklamayın; 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: Şekil Ekle

slide.shapes.add_auto_shape() kullanarak bir AutoShape ekleyin. Parametreler (shape_type, x, y, width, height) tümü puan cinsindendir (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 Kaydet

prs.save(path, SaveFormat.PPTX)‘yi with bloğu çıkmadan önce çağırın. 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

Presentation‘yi with bloğu olmadan örnekliyorsunuz. Her zaman kullanın:

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

AttributeError: __enter__

Bu hatayı görürseniz, aspose.slides_foss (aspose.slides değil) ithal ettiğinizden emin olun. PyPI üzerindeki paket adı aspose-slides-foss ve çalışma zamanı ithalatı aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX bir enum üyesidir, fonksiyon değildir. prs.save("file.pptx", SaveFormat.PPTX) olarak kullanın.


Sıkça Sorulan Sorular

Varsayılan slayt boyutu nedir?

Yeni bir Presentation(), standart 10 × 7.5 inç (720 × 540 nokta) boyutunda slaytlar oluşturur. Slayt boyutunu değiştirme bu sürümde henüz desteklenmemektedir.

Birden fazla slayt ekleyebilir miyim?

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

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

Mevcut 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 formatlara 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