Python Kullanarak Sunumlarda Şekilleri Yönetme
Genel Bakış
Bu kılavuz, .NET üzerinden Python için Aspose.Slides’de şekil manipülasyonunu tanıtır. Alternatif Metin ile birlikte şekilleri bulma, çoğaltma, silme veya gizleme, yeniden sıralama, hizalama ve çevirme, kimlikleri okuma ve düzen odaklı biçimlendirme, ayrıca bireysel şekilleri SVG olarak dışa aktarma gibi pratik desenleri Presentation ve Shape API’lerini kullanarak öğrenin.
Slaytlarda Şekilleri Bulma
PowerPoint, şekilleri yalnızca dahili kimlikleriyle tanır. Hedef şekle PowerPoint’te benzersiz bir Alt Text (Alternatif Metin) atayın, ardından Aspose.Slides for Python ile sunumu açın, slayt şekilleri üzerinde yineleme yapın ve Alt Text’i eşleşen şekli seçin. find_shape yöntemi bu yaklaşımı uygular ve eşleşen şekli döndürür.
import aspose.slides as slides
# Bir slaytta alternatif metnine göre şekil bulur.
def find_shape(slide, alt_text):
for slide_shape in slide.shapes:
if slide_shape.alternative_text == alt_text:
return slide_shape
return None
# Bir sunum dosyasını temsil eden Presentation sınıfını örnekler.
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
# Alt Metin "Shape1" olan şekli bul.
shape = find_shape(slide, "Shape1")
if shape is not None:
print("Shape name:", shape.name)
Şekilleri Kopyalama
Bir kaynak slayttan yeni bir slayta şekilleri kopyalamak için Aspose.Slides’de şu adımları izleyin:
- Kaynak dosyadan bir Presentation oluşturun.
- İndeks ile kaynak slaytı ve onun şekil koleksiyonunu alın.
- Ana slayttan boş bir düzen (layout) alın.
- Bu düzeni kullanarak boş bir slayt ekleyin ve şekillerini alın.
- Şekilleri hedef slayta kopyalayın.
- Sunumu PPTX olarak kaydedin.
Aşağıdaki kod örneği bir slayttan diğerine şekilleri kopyalar.
import aspose.slides as slides
# Presentation sınıfını örnekle.
with slides.Presentation("sample.pptx") as presentation:
source_shapes = presentation.slides[0].shapes
blank_layout = presentation.masters[0].layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
target_slide = presentation.slides.add_empty_slide(blank_layout)
target_shapes = target_slide.shapes
target_shapes.add_clone(source_shapes[1], 50, 150 + source_shapes[0].height)
target_shapes.add_clone(source_shapes[2])
target_shapes.insert_clone(0, source_shapes[0], 50, 150)
# Sunumu diske kaydet.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Şekilleri Kaldırma
Aspose.Slides, bir slayttan herhangi bir şekli kaldırmanıza izin verir. Örneğin, birincil slaydın bir şeklini Alternatif Metni ile silmek için şu adımları izleyin:
- Bir Presentation örneği oluşturun ve dosyayı yükleyin.
- Slayt koleksiyonundan ilk slayta erişin.
- Alternatif Metin değeriyle şekli bulun.
- Şekli slaydın şekil koleksiyonundan kaldırın.
- Sunumu PPTX formatında diske kaydedin.
import aspose.slides as slides
# Alternatif metnine göre bir slaytta şekil bulur.
def find_shape(slide, alt_text):
for slide_shape in slide.shapes:
if slide_shape.alternative_text == alt_text:
return slide_shape
return None
# Bir sunum dosyasını temsil eden Presentation sınıfını örnekle.
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
# Alt Metin "User Defined" olan şekli bul.
shape = find_shape(slide, "User Defined")
# Şekli kaldır.
slide.shapes.remove(shape)
# Sunumu diske kaydet.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Şekilleri Gizleme
Aspose.Slides, bir slayttaki herhangi bir şekli gizlemenizi sağlar. Örneğin, birincil slayttaki bir şekli Alternatif Metni ile gizlemek için şu adımları izleyin:
- Bir Presentation örneği oluşturun ve dosyayı yükleyin.
- Slayt koleksiyonundan ilk slayta erişin.
- Alternatif Metin değeriyle şekli bulun.
- Şekli gizleyin.
- Sunumu PPTX formatında diske kaydedin.
# Alternatif metnine göre bir slaytta şekil bulur.
def find_shape(slide, alt_text):
for slide_shape in slide.shapes:
if slide_shape.alternative_text == alt_text:
return slide_shape
return None
# Bir sunum dosyasını temsil eden Presentation sınıfını örnekle.
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
# Alt Metin "User Defined" olan şekli bul.
shape = find_shape(slide, "User Defined")
# Şekli gizle.
shape.hidden = True
# Sunumu diske kaydet.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Şekillerin Sırasını Değiştirme
Aspose.Slides, geliştiricilerin şekilleri yeniden sıralamasına (z-sırasını değiştirmesine) olanak tanır. Yeniden sıralama, hangi şeklin önde ya da arkada görüneceğini belirler. Örneğin, birinci slayttaki iki şekli yeniden sıralamak için aşağıdaki adımları izleyin:
- Bir Presentation sınıfının örneğini oluşturun.
- İlk slayta erişin.
- İlk şekli ekleyin (örneğin bir dikdörtgen).
- İkinci şekli ekleyin (örneğin bir üçgen).
- Şekilleri, ikinci şekli koleksiyondaki ilk konuma taşıyarak yeniden sıralayın.
- Sunumu diske kaydedin.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
# Slayta iki şekil ekle.
shape1 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 20, 20, 200, 150)
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.TRIANGLE, 20, 200, 200, 150)
# İkinci şekli birinci konuma taşı.
slide.shapes.reorder(0, shape2)
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Interop Şekil Kimliğini Al
Aspose.Slides, bir şeklin benzersiz kimliğini slayt kapsamı içinde edinmenizi sağlar; bu, tüm sunumda benzersiz olan unique_id özelliğinden farklıdır. office_interop_shape_id özelliği Shape sınıfında bulunur. Bu değerin karşılığı, Microsoft.Office.Interop.PowerPoint.Shape nesnesinin Id değeridir. Aşağıda bir örnek kod parçacığı gösterilmiştir.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
# Şeklin slayt içindeki benzersiz tanımlayıcısını al.
officeInteropShapeId = presentation.slides[0].shapes[0].office_interop_shape_id
Şekiller için Alternatif Metin Ayarlama
Aspose.Slides, geliştiricilerin herhangi bir şekil için alternatif metin ayarlamasına izin verir. Alternatif metni, bir sunumda şekilleri tanımlamak ve bulmak için kullanabilirsiniz. Alternatif metin özelliği, hem Aspose.Slides hem de Microsoft PowerPoint aracılığıyla okunup yazılabilir. Şekillere bu özellik etiketlendiğinde, daha sonra onları bir slaytta kaldırabilir, gizleyebilir veya yeniden sıralayabilirsiniz.
Bir şeklin alternatif metnini ayarlamak için şu adımları izleyin:
- Bir Presentation sınıfının örneğini oluşturun.
- İlk slayta erişin.
- Slayta bir şekil ekleyin.
- Alternatif metni ayarlayın.
- Sunumu diske kaydedin.
import aspose.slides as slides
# PPTX dosyasını temsil eden Presentation sınıfını örnekle.
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Bir şekil ekle.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 40, 150, 50)
# Şekil için alternatif metni ayarla.
shape.alternative_text = "User Defined"
# Sunumu diske kaydet.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Şekiller İçin Düzen Biçimlerine Erişim
Aspose.Slides, şekiller için düzen biçimlerine erişim sağlayan basit bir API sunar. Bu bölüm, düzen biçimlerine nasıl erişileceğini gösterir.
import aspose.slides as slides
with slides.Presentation(folder_path + "sample.pptx") as presentation:
for layout_slide in presentation.layout_slides:
fill_formats = list(map(lambda shape: shape.fill_format, layout_slide.shapes))
line_formats = list(map(lambda shape: shape.line_format, layout_slide.shapes))
Şekilleri SVG Olarak Oluşturma
Aspose.Slides, şekilleri SVG olarak oluşturmayı destekler. Shape sınıfındaki write_as_svg metodu (ve aşırı yüklemeleri) bir şeklin içeriğini SVG görüntüsü olarak kaydetmenizi sağlar. Aşağıdaki kod parçacığı, bir şekli SVG dosyasına nasıl dışa aktarılacağını gösterir.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
with open("output.svg", "wb") as image_stream:
# İlk slaydın ilk şeklini al.
shape = presentation.slides[0].shapes[0]
shape.write_as_svg(image_stream)
Şekli Hizalama
SlidesUtil sınıfındaki align_shape metodunu kullanarak şunları yapabilirsiniz:
- Şekilleri bir slaydın kenar boşluklarına göre hizalayabilirsiniz (Örnek 1’e bakın).
- Şekilleri birbirlerine göre hizalayabilirsiniz (Örnek 2’ye bakın).
ShapesAlignmentType sayımı, kullanılabilir hizalama seçeneklerini tanımlar.
Example 1
Bu Python kodu, 1, 2 ve 4 indisindeki şekilleri slaydın üst kenarına nasıl hizalayacağınızı gösterir:
import aspose.slides as slides
align_type = slides.ShapesAlignmentType.ALIGN_TOP
slide_indices = [1, 2, 4]
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
slides.util.SlideUtil.align_shapes(align_type, True, slide, slide_indices)
Example 2
Bu Python örneği, bir koleksiyondaki tüm şekilleri o koleksiyondaki en alttaki şekle göre nasıl hizalayacağınızı gösterir:
import aspose.slides as slides
align_type = slides.ShapesAlignmentType.ALIGN_BOTTOM
with slides.Presentation("sample.pptx") as presentation:
slides.util.SlideUtil.align_shapes(align_type, False, presentation.slides[0])
Çevirme Özellikleri
Aspose.Slides’te, ShapeFrame sınıfı, şekillerin yatay ve dikey yansıtılmasını flip_h ve flip_v özellikleriyle kontrol etmenizi sağlar. Her iki özellik de NullableBool tipindedir; TRUE bir çevirme, FALSE çevirme yok ve NOT_DEFINED varsayılan davranışı kullanmak anlamına gelir. Bu değerler bir şeklin Frame üzerinden erişilebilir.
Çevirme ayarlarını değiştirmek için, şeklin mevcut konumu ve boyutu, istenen flip_h ve flip_v değerleri ve dönüş açısı ile yeni bir ShapeFrame örneği oluşturulur. Bu örnek şeklin Frame’ine atanıp sunum kaydedildiğinde, yansıma dönüşümleri uygulanır ve çıkış dosyasına yazılır.
Örneğin, sample.pptx dosyamızın ilk slaydında varsayılan çevirme ayarlarına sahip tek bir şekil olduğunu varsayalım; aşağıda gösterildiği gibi.

Aşağıdaki kod örneği, şeklin mevcut çevirme özelliklerini alır ve hem yatay hem de dikey olarak çevirir.
with slides.Presentation("sample.pptx") as presentation:
shape = presentation.slides[0].shapes[0]
# Şeklin yatay çevirme özelliğini al.
horizontal_flip = shape.frame.flip_h
print("Horizontal flip:", horizontal_flip)
# Şeklin dikey çevirme özelliğini al.
vertical_flip = shape.frame.flip_v
print("Vertical flip:", vertical_flip)
x, y = shape.frame.x, shape.frame.y
width, height = shape.frame.width, shape.frame.height
flip_h, flip_v = slides.NullableBool.TRUE, slides.NullableBool.TRUE # Yatay ve dikey olarak çevir.
rotation = shape.frame.rotation
shape.frame = slides.ShapeFrame(x, y, width, height, flip_h, flip_v, rotation)
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Sonuç:

FAQ
Bir slaytta şekilleri (birleştirme/kesişim/çıkartma) masaüstü editöründe olduğu gibi birleştirebilir miyim?
Yerleşik bir Boolean işlem API’si yoktur. İstenen konturu kendiniz oluşturarak yaklaşık bir çözüm elde edebilirsiniz; örneğin, sonucu geometriyi (GeometryPath) kullanarak hesaplayıp bu kontura sahip yeni bir şekil oluşturabilir, isteğe bağlı olarak orijinal şekilleri kaldırabilirsiniz.
Bir şeklin her zaman “üstte” kalması için yığın sırasını (z-sırası) nasıl kontrol edebilirim?
Slaydın shapes koleksiyonundaki ekleme/taşıma sırasını değiştirin. Öngörülebilir sonuçlar için, diğer tüm slayt değişikliklerinden sonra z-sırasını sonlandırın.
PowerPoint’te kullanıcıların bir şekli düzenlemesini önlemek için şekli “kilitleyebilir” miyim?
Evet. shape-level protection flags ayarlayın (örneğin seçim, hareket, yeniden boyutlandırma, metin düzenlemeleri kilitleme). Gerekirse, bu kısıtlamaları ana slaytta veya düzende yansıtabilirsiniz. Bunun bir UI düzeyi koruma olduğunu ve güvenlik özelliği olmadığını unutmayın; daha güçlü koruma için dosya düzeyi kısıtlamalarla (örneğin salt okunur önerileri veya şifreler) birleştirin.