Python üzerinden Java ile Sunum Slayt Ana Şablonlarını Yönet
Genel Bakış
Bir slayt ana şablonu, bir grup slayt için ortak tasarım ayarlarını tanımlar. Ortak şekiller, logolar, arka planlar, metin stilleri, tema ayarları ve alt bilgi ayarları içerebilir. PowerPoint’te, bir slayt ana şablonunu düzenlemek, aynı biçimlendirmeyi her slaytta tekrarlamadan sunumu tutarlı tutmanın yaygın yoludur.
Aspose.Slides for Python via Java aynı modeli destekler. Bir sunum bir veya daha fazla ana şablon içerebilir ve her ana şablon birden çok düzen slaytı barındırabilir. Normal slaytlar genellikle doğrudan bir ana şablona başvurmaz. Bunun yerine bir normal slayt bir düzen slaytı kullanır ve bu düzen slaytı bir ana şablona aittir.
Hiyerarşi şu şekildedir:
- Slayt ana şablonu – ortak tasarımı ve temayı tanımlar.
- Düzen slaytı – yer tutucuların ve düzen‑seviyesi biçimlendirmelerin belirli bir düzenini tanımlar.
- Normal slayt – gerçek sunum içeriğini içerir ve bir düzen slaytı kullanır.

Aspose.Slides’te bir slayt ana şablonu, MasterSlide sınıfı ile temsil edilir. Bir sunumdaki tüm ana şablonlar, Presentation.getMasters koleksiyonu aracılığıyla erişilebilir ve bu koleksiyon MasterSlideCollection olarak temsil edilir.
Kalıtım
Aynı özellik birden fazla seviyede tanımlandığında, daha spesifik seviye kazanır. Örneğin, bir ana şablon ve bir düzen slaytı aynı arka planı tanımlıyorsa, o düzen temel alınan slaytlar düzen arka planını kullanır. Düzen slaytları hakkında daha fazla bilgi için Apply or Change Slide Layouts bölümüne bakın.Slayt Ana Şablonlarına Erişim
PowerPoint’te Görünüm > Slayt Ana Şablonu menüsünden Slayt Ana Şablonu görünümünü açabilirsiniz.

Aspose.Slides’te, ana şablonlara erişmek için Presentation.getMasters koleksiyonunu kullanın:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("presentation.pptx")
try:
first_master_slide = presentation.getMasters().get_Item(0)
master_slide_count = presentation.getMasters().size()
first_master_layout_slide_count = first_master_slide.getLayoutSlides().size()
print(f"Master slides: {master_slide_count}")
print(f"Layouts in the first master: {first_master_layout_slide_count}")
finally:
presentation.dispose()
Ayrıca bir normal slaytın kullandığı ana şablonu, onun düzeni aracılığıyla alabilirsiniz:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("presentation.pptx")
try:
slide = presentation.getSlides().get_Item(0)
layout_slide = slide.getLayoutSlide()
master_slide = layout_slide.getMasterSlide()
master_slide_name = master_slide.getName()
print(master_slide_name)
finally:
presentation.dispose()
Bir Slayt Ana Şablonu Neler İçerir
Bir ana şablon, slayt benzeri bir nesnedir. BaseSlide sınıfından türediği için normal ve düzen slaytları tarafından kullanılan birçok slayt özelliğini sunar. Ana şablona özgü üyeler MasterSlide API sayfasında listelenmiştir.
Sık kullanılan ana şablon üyeleri şunlardır:
| Üye | Amaç |
|---|---|
| getBackground | Ana‑seviye slayt arka planını ayarlar. |
| getShapes | Logolar, resim çerçeveleri ve ortak metin gibi ana şablona yerleştirilen şekilleri saklar. |
| getLayoutSlides | Ana şablona ait düzen slaytlarını saklar. |
| getThemeManager | Ana tema API’lerine erişim sağlar. |
| getHeaderFooterManager | Ana şablon ve alt düzenleri için başlık, alt bilgi, tarih ve slayt numaralarını kontrol eder. |
| getDependingSlides | Düzenleri aracılığıyla ana şablona bağlı olan normal slaytları döndürür. |
Bir Slayt Ana Şablonuna Görüntü Ekleme
Bir ana şablona bir görüntü eklendiğinde, o ana şablondan türetilen düzenleri kullanan slaytlarda görüntülenir. Bu, logolar, filigranlar, dekoratif bantlar ve diğer tekrarlanan görsel öğeler için yararlıdır.
Aşağıdaki örnek, ilk ana şablona bir logo ekler:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Images, Presentation, SaveFormat, ShapeType
presentation = Presentation("presentation.pptx")
try:
master_slide = presentation.getMasters().get_Item(0)
logo = Images.fromFile("logo.png")
try:
logo_image = presentation.getImages().addImage(logo)
master_slide.getShapes().addPictureFrame(ShapeType.Rectangle, 20, 20, 80, 80, logo_image)
finally:
logo.dispose()
presentation.save("presentation-with-logo.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Resim çerçeveleri hakkında daha fazla bilgi için Picture Frame bölümüne bakın.
Yer Tutucularla Çalışma
Yer tutucular genellikle düzen slaytlarında tanımlanır. Ana şablon, bu düzenlerin miras aldığı ortak stil ve temayı sağlar; her düzen ise hangi yer tutucuların mevcut olduğunu ve nerede konumlandırıldığını belirler.
PowerPoint’te yer tutucu komutları Slayt Ana Şablonu görünümünde bulunur.

Aspose.Slides ile yeni yer tutucular eklemek için, ana şablona ait düzen slaytıyla çalışın:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation("presentation.pptx")
try:
master_slide = presentation.getMasters().get_Item(0)
blank_layout_slide = master_slide.getLayoutSlides().getByType(SlideLayoutType.Blank)
if blank_layout_slide is None:
blank_layout_slide = master_slide.getLayoutSlides().add(SlideLayoutType.Blank, "Blank")
blank_layout_slide.getPlaceholderManager().addTextPlaceholder(60, 120, 600, 80)
presentation.getSlides().addEmptySlide(blank_layout_slide)
presentation.save("presentation-with-placeholder.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Ayrıca bir ana şablonda zaten var olan yer tutucu şekillerini biçimlendirebilirsiniz. Aşağıdaki örnek, başlık yer tutucusunu bulur ve doğrusal bir degrade doldurma uygular:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import AutoShape, FillType, GradientShape, PlaceholderType, Presentation, SaveFormat
Color = jpype.JClass("java.awt.Color")
presentation = Presentation("presentation.pptx")
try:
master_slide = presentation.getMasters().get_Item(0)
title_placeholder = None
for shape in master_slide.getShapes():
if isinstance(shape, AutoShape):
if shape.getPlaceholder() is not None and shape.getPlaceholder().getType() == PlaceholderType.Title:
title_placeholder = shape
break
if title_placeholder is not None:
red_gradient_color = Color(255, 0, 0)
purple_gradient_color = Color(128, 0, 128)
title_placeholder.getFillFormat().setFillType(FillType.Gradient)
title_placeholder.getFillFormat().getGradientFormat().setGradientShape(GradientShape.Linear)
title_placeholder.getFillFormat().getGradientFormat().getGradientStops().add(jpype.JFloat(0.0), red_gradient_color)
title_placeholder.getFillFormat().getGradientFormat().getGradientStops().add(jpype.JFloat(1.0), purple_gradient_color)
presentation.save("presentation-title-style.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()

Daha fazla yer tutucu ve metin biçimlendirme seçeneği için Set Prompt Text in Placeholder ve Text Formatting bölümlerine bakın.
Bir Slayt Ana Şablonu Arka Planını Değiştirme
Ana şablon arka planı, üzerine bir şey yazılmadığı sürece düzenler ve slaytlar tarafından miras alınır. Aşağıdaki örnek, ilk ana şablon için katı bir arka plan rengi ayarlar:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import BackgroundType, FillType, Presentation, SaveFormat
Color = jpype.JClass("java.awt.Color")
presentation = Presentation("presentation.pptx")
try:
master_slide = presentation.getMasters().get_Item(0)
master_background_color = Color.GREEN
master_slide.getBackground().setType(BackgroundType.OwnBackground)
master_slide.getBackground().getFillFormat().setFillType(FillType.Solid)
master_slide.getBackground().getFillFormat().getSolidFillColor().setColor(master_background_color)
presentation.save("presentation-master-background.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
İlgili konular için Presentation Background ve Presentation Theme bölümlerine bakın.
Bir Slayt Ana Şablonunu Başka Bir Sunuma Kopyalama
Bir ana şablonu başka bir sunuma kopyalamak için MasterSlideCollection.addClone yöntemini kullanın. Kopyalanan ana şablon, hedef sunumdaki düzenler ve slaytlar tarafından kullanılabilir.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
source_presentation = Presentation("source.pptx")
destination_presentation = Presentation("destination.pptx")
try:
source_master_slide = source_presentation.getMasters().get_Item(0)
cloned_master_slide = destination_presentation.getMasters().addClone(source_master_slide)
destination_presentation.save("destination-with-master.pptx", SaveFormat.Pptx)
finally:
source_presentation.dispose()
destination_presentation.dispose()
Normal slaytları ve ana şablonlarını birlikte kopyalamanız gerekiyorsa, Clone Slides bölümüne bakın.
Birden Çok Slayt Ana Şablonu Ekleme
Bir sunum birden fazla ana şablon içerebilir. Bu, farklı bölümlerin farklı marka, sayfa yapısı veya tema ayarları gerektirdiği durumlarda faydalıdır.

Aşağıdaki örnek, varsayılan ana şablonu kopyalar, klona farklı bir arka plan verir, o kopyalanan ana şablon altında bir düzen oluşturur ve bu düzene dayalı yeni bir slayt ekler:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import BackgroundType, FillType, Presentation, SaveFormat, SlideLayoutType
Color = jpype.JClass("java.awt.Color")
presentation = Presentation("presentation.pptx")
try:
default_master_slide = presentation.getMasters().get_Item(0)
section_master_slide = presentation.getMasters().addClone(default_master_slide)
section_master_background_color = Color.LIGHT_GRAY
section_master_slide.getBackground().setType(BackgroundType.OwnBackground)
section_master_slide.getBackground().getFillFormat().setFillType(FillType.Solid)
section_master_slide.getBackground().getFillFormat().getSolidFillColor().setColor(section_master_background_color)
source_blank_layout = default_master_slide.getLayoutSlides().getByType(SlideLayoutType.Blank)
if source_blank_layout is None:
source_blank_layout = default_master_slide.getLayoutSlides().get_Item(0)
section_blank_layout = section_master_slide.getLayoutSlides().addClone(source_blank_layout)
presentation.getSlides().addEmptySlide(section_blank_layout)
presentation.save("presentation-with-multiple-masters.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Slayt Ana Şablonlarını Karşılaştırma
Ana şablonlar, BaseSlide sınıfından miras alınan equals yöntemi ile karşılaştırılabilir. Karşılaştırma, şekiller, metin, biçimlendirme, animasyonlar ve diğer slayt ayarları gibi yapı ve statik içeriği denetler. Slayt kimlikleri gibi benzersiz tanımlayıcıları veya geçerli tarih gibi dinamik yer tutucu değerlerini karşılaştırmaz.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
first_presentation = Presentation("first.pptx")
second_presentation = Presentation("second.pptx")
try:
first_presentation_master_count = first_presentation.getMasters().size()
second_presentation_master_count = second_presentation.getMasters().size()
for first_master_index in range(first_presentation_master_count):
for second_master_index in range(second_presentation_master_count):
first_master_slide = first_presentation.getMasters().get_Item(first_master_index)
second_master_slide = second_presentation.getMasters().get_Item(second_master_index)
are_master_slides_equal = first_master_slide.equals(second_master_slide)
if are_master_slides_equal:
print(f"first.pptx master #{first_master_index} equals second.pptx master #{second_master_index}")
finally:
first_presentation.dispose()
second_presentation.dispose()
Daha fazla bilgi için Compare Presentation Slides bölümüne bakın.
Slayt Ana Şablonu Görünümünü Varsayılan Görünüm Olarak Ayarlama
PowerPoint’in ilk açtığı görünümü kontrol etmek için ViewProperties üzerindeki setLastView metodunu kullanın. Aşağıdaki örnek, sunumu Slayt Ana Şablonu görünümünde açar:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, ViewType
presentation = Presentation("presentation.pptx")
try:
presentation.getViewProperties().setLastView(ViewType.SlideMasterView)
presentation.save("presentation-master-view.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Daha fazla görünüm ayarı için Save Presentation bölümüne bakın.
Kullanılmayan Ana Şablonları Kaldırma
Bazen bir sunumda normal slaytlar tarafından artık kullanılmayan ana şablonlar bulunur. Kullanılmayan ana şablonları kaldırmak dosya boyutunu azaltabilir ve şablon bakımını basitleştirebilir.
Kullanılmayan ana şablonları, Presentation.getMasters koleksiyonundan kaldırmak için removeUnused metodunu kullanın:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("presentation.pptx")
try:
presentation.getMasters().removeUnused(True)
presentation.save("presentation-clean.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Ayrıca düşük‑kodlu Compress.removeUnusedMasterSlides metodunu da kullanabilirsiniz:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Compress, Presentation, SaveFormat
presentation = Presentation("presentation.pptx")
try:
Compress.removeUnusedMasterSlides(presentation)
presentation.save("presentation-clean.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
SSS
Slayt ana şablonu ile düzen slaytı arasındaki fark nedir?
Slayt ana şablonu tema, arka plan, ortak şekiller ve metin stilleri gibi ortak tasarım ayarlarını tanımlar. Bir düzen slaytı bir ana şablona aittir ve yer tutucuların belirli bir düzenini tanımlar. Normal bir slayt bir düzen slaytı kullanır, böylece hem düzen hem de ana şablondan miras alır.
Bir sunum birden fazla slayt ana şablonu içerebilir mi?
Evet. Bir sunum birden fazla slayt ana şablonu içerebilir. Farklı bölümlerin farklı görsel sistemler veya marka kimliği gerektirdiği durumlarda birden çok ana şablon kullanın.
Yer tutucuları ana şablona mı yoksa düzen slaytına mı eklemeliyim?
Çoğu durumda yer tutucuları düzen slaytlarına ekleyin. Ortak görsel öğeleri ve ortak biçimlendirmeyi ana şablona koyun, ardından normal slaytların kullanacağı içerik yer tutucularını düzenlerde tanımlayın.
Kullanımda olan bir ana şablonu silebilir miyim?
Hayır. Bağımlı slaytları olan bir ana şablon doğrudan güvenli bir şekilde kaldırılamaz. Önce bu slaytları başka bir ana şablonun düzenlerine taşıyın veya yalnızca kullanılmayan ana şablonları kaldıran temizlik yöntemini kullanın.