Python aracılığıyla Java kullanarak Sunumlarda Slayt Geçişlerini Yönetme
Genel Bakış
Slayt geçişleri, bir slayt gösterisi sırasında slaytların nasıl göründüğünü kontrol eder. Aspose.Slides for Python via Java ile her slayt için bir geçiş efekti seçebilir, ilerlemeyi fare tıklaması ya da zamanlayıcı ile yapılandırabilir ve bir effekte özgü seçenekleri ayarlayabilirsiniz. Bu makale, geçişleri uygulamak, kesin geçiş sürelerini belirlemek, slayt zamanlamasını yönetmek ve iki slayt arasında bir Morph geçişi oluşturmak için Python örneklerini kullanır. Örnekler ayrıca ayarların bir PPTX dosyasına nasıl kaydedileceğini gösterir.
Slayt Geçişi Ekle
Bir geçiş uygulamak için, bir sunumu Presentation sınıfı ile yükleyin ve slaytın geçiş ayarlarına getSlideShowTransition üzerinden erişin. TransitionType enumarasyonundan bir değerle setType kullanın, ardından sunumu kaydedin.
Aşağıdaki örnek, ilk slayta Circle geçişi ve ikinci slayta Comb geçişi uygular. En az iki slaytı olan bir input.pptx dosyası kullanın.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, TransitionType
presentation = Presentation("input.pptx")
try:
if presentation.getSlides().size() >= 2:
presentation.getSlides().get_Item(0).getSlideShowTransition().setType(TransitionType.Circle)
presentation.getSlides().get_Item(1).getSlideShowTransition().setType(TransitionType.Comb)
presentation.save("slide-transitions.pptx", SaveFormat.Pptx)
else:
print("The input presentation must contain at least two slides.")
finally:
presentation.dispose()
Gelişmiş Slayt Geçişi Ekle
Bir slaytın ekranda ne kadar kalacağını ve fare tıklamasının slayt gösterisini ilerletip ilerletmeyeceğini yapılandırabilirsiniz. Aşağıdaki yöntemler bu davranışı kontrol eder:
- setAdvanceOnClick izleyicinin fareye tıklayarak ilerlemesini sağlar.
- setAdvanceAfter otomatik ilerlemeyi etkinleştirir.
- setAdvanceAfterTime otomatik ilerlemeden önceki gecikmeyi milisaniye cinsinden belirtir.
Hem tıklama hem de zamanlı ilerlemeyi etkinleştirerek izleyicinin bir tıklama ile ilerlemesini ya da zamanlayıcıyı beklemesini sağlayabilirsiniz. Yalnızca zamanlayıcıyı kullanmak için setAdvanceOnClick metoduna False geçin. Gecikme, slayt gösterisinin ne zaman ilerleyeceğini kontrol eder; görsel geçiş efektinin süresini belirlemez.
Bu örnek, ilk üç slayta farklı efektler atar ve sırasıyla 3, 5 ve 7 saniye sonra otomatik ilerlemeyi etkinleştirir. Fare tıklamaları da bu slaytları ilerletebilir. En az üç slaytı olan bir input.pptx dosyası kullanın.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, TransitionType
presentation = Presentation("input.pptx")
try:
if presentation.getSlides().size() >= 3:
first_transition = presentation.getSlides().get_Item(0).getSlideShowTransition()
first_transition.setType(TransitionType.Circle)
first_transition.setAdvanceOnClick(True)
first_transition.setAdvanceAfter(True)
first_transition.setAdvanceAfterTime(3000)
second_transition = presentation.getSlides().get_Item(1).getSlideShowTransition()
second_transition.setType(TransitionType.Comb)
second_transition.setAdvanceOnClick(True)
second_transition.setAdvanceAfter(True)
second_transition.setAdvanceAfterTime(5000)
third_transition = presentation.getSlides().get_Item(2).getSlideShowTransition()
third_transition.setType(TransitionType.Zoom)
third_transition.setAdvanceOnClick(True)
third_transition.setAdvanceAfter(True)
third_transition.setAdvanceAfterTime(7000)
presentation.save("advanced-transitions.pptx", SaveFormat.Pptx)
else:
print("The input presentation must contain at least three slides.")
finally:
presentation.dispose()
Zamanlı ilerlemenin etkin olup olmadığını kontrol etmek için getAdvanceAfter çağırın. Saklanan bir gecikme yalnız başına zamanlayıcının aktif olduğunu göstermez.
Sonraki örnek, yukarıda kaydedilen dosyayı açar, etkin olan her zamanlayıcıyı raporlar ve iki saniyeden uzun gecikmeye sahip slaytlar için otomatik ilerlemeyi devre dışı bırakır. Bu slaytlar için fare tıklamasını etkinleştirir ve güncellenmiş ayarları kaydeder.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("advanced-transitions.pptx")
try:
for slide in presentation.getSlides():
transition = slide.getSlideShowTransition()
if transition.getAdvanceAfter():
print(f"Slide {slide.getSlideNumber()}: advance after {transition.getAdvanceAfterTime()} ms.")
if transition.getAdvanceAfterTime() > 2000:
transition.setAdvanceAfter(False)
transition.setAdvanceOnClick(True)
presentation.save("adjusted-transitions.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Geçiş Zamanlamasını Kesin Olarak Kontrol Et
setDuration kullanarak bir geçiş efektinin kesin uzunluğunu milisaniye cinsinden belirtebilirsiniz. Slaytın getSlideShowTransition yöntemi bu ayarları SlideShowTransition üzerinden sunar:
| Yöntem | Amaç |
|---|---|
| setDuration | Geçiş efektinin kendisinin süresini milisaniye cinsinden ayarlar. |
| setAdvanceAfterTime | Slaytın otomatik olarak ilerlemesinden önceki gecikmeyi milisaniye cinsinden ayarlar. Bu zamanlayıcıyı etkinleştirmek için setAdvanceAfter metoduna True geçin. |
| setSpeed | TransitionSpeed enumarasyonundan önceden tanımlı bir hız kategorisi seçer: Slow, Medium veya Fast. Kesin bir süre belirtilmediğinde kullanılır. |
[setDuration] yalnızca geçiş efektini kontrol eder; slaytın ekranda ne kadar kalacağını belirlemez. Otomatik ilerleme gecikmesini ayrı olarak yapılandırın. Açık bir süre ayarlanmamışsa, Aspose.Slides geçiş tipinden ve getSpeed değerinden etki süresini belirler.
Her Slayta Aynı Süreyi Uygula
Tutarlı bir tempo için aynı efekti ve kesin süreyi her slayta uygulayın. Bu örnek input.pptx dosyasını yükler, TransitionType üzerinden Fade’ı seçer ve her geçişe 750 milisaniye süre verir. Ayrıca otomatik ilerlemeyi 5.000 milisaniye sonra etkinleştirir ve fare tıklamasıyla ilerlemeyi devre dışı bırakır, ardından sonucu PPTX olarak kaydeder.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, TransitionType
presentation = Presentation("input.pptx")
try:
for slide in presentation.getSlides():
transition = slide.getSlideShowTransition()
transition.setType(TransitionType.Fade)
transition.setDuration(750)
# Etki süresinden bağımsız olarak otomatik ilerlemeyi yapılandır.
transition.setAdvanceAfter(True)
transition.setAdvanceAfterTime(5000)
transition.setAdvanceOnClick(False)
presentation.save("precise-transitions.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Bireysel Slaytlar İçin Farklı Süreler Ayarla
Farklı slaytlar farklı efekt süreleri kullanabilir. Örneğin, başlık slaytı için kısa bir geçiş ve bölüm giriş slaytı için daha uzun bir geçiş kullanın. Bu örnek, ilk slayt için 500 milisaniye ve ikinci slayt için 1.200 milisaniye ayarlar. En az iki slaytı olan bir input.pptx dosyası kullanın.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, TransitionType
presentation = Presentation("input.pptx")
try:
if presentation.getSlides().size() >= 2:
first_transition = presentation.getSlides().get_Item(0).getSlideShowTransition()
first_transition.setType(TransitionType.Fade)
first_transition.setDuration(500)
second_transition = presentation.getSlides().get_Item(1).getSlideShowTransition()
second_transition.setType(TransitionType.Push)
second_transition.setDuration(1200)
presentation.save("individual-transition-durations.pptx", SaveFormat.Pptx)
else:
print("The input presentation must contain at least two slides.")
finally:
presentation.dispose()
Animasyonlu Çıktı ile Geçişleri Koordine Et
Bir animated GIF, HTML5 presentation veya video hazırlarken, hedeflenen tempoya uygun olarak dışa aktarmadan önce kesin geçiş sürelerini ayarlayın. Örneğin, sahneler arasında 600 milisaniyelik bir fade kullanın ve her slaytın ilerleme gecikmesini ayrı ayrı ayarlayarak anlatımına veya içeriğine zaman tanıyın.
GIF ve video için, çıktı kare hızını efekt süresiyle koordine edin: 600 milisaniye, 30 fps’de 18 kareye eşittir. HTML5’te dışa aktarma ayarlarında animasyonlu geçişleri etkinleştirin. Seçilen dışa aktarma formatının desteklediği efekt ve zamanlama seçeneklerini kontrol edin ve senkronizasyonu doğrulamak için çıktıyı önizleyin.
Mevcut Bir Geçiş Süresini Oku
Geçişi değiştirmeden önce getDuration metodunu çağırarak açık bir değerin saklanıp saklanmadığını belirleyin. -1 değeri, açık bir sürenin ayarlanmadığını; negatif olmayan bir değer ise saklanan sürenin milisaniye cinsinden olduğunu gösterir. Ayarlanmamış değer, hesaplanan oynatma süresi değildir: Aspose.Slides, geçiş tipini ve getSpeed değerini kullanarak bu süreyi belirler. Bir geçiş tipi ayarlamak bir süreyi başlatabilir, bu yüzden önce orijinal ayarları inceleyin.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("input.pptx")
try:
for slide in presentation.getSlides():
transition = slide.getSlideShowTransition()
duration = transition.getDuration()
if duration >= 0:
print(f"Slide {slide.getSlideNumber()}: stored transition duration is {duration} ms.")
else:
print(f"Slide {slide.getSlideNumber()}: no explicit duration; timing depends on transition type {transition.getType()} and speed {transition.getSpeed()}.")
finally:
presentation.dispose()
Morph Geçişi
Morph geçişi, ardışık slaytlardaki nesneler arasındaki değişiklikleri canlandırır. Basit bir Morph etkisi oluşturmak için bir slaytı kopyalayın, kopyadaki bir nesneyi taşıyın veya yeniden boyutlandırın ve ikinci slayta Morph geçişi uygulayın. Bu, geçişin ilgili nesneleri orijinal ve değiştirilmiş durumları arasında canlandırmasını sağlar.
Aşağıdaki örnek, bir metin dikdörtgeni içeren bir slayt oluşturur, slaytı kopyalar ve kopyadaki dikdörtgenin konum ve boyutunu değiştirir. Ardından ikinci slayt için TransitionType enumarasyonundan Morph’ı seçer. Kaydedilen dosyayı Morph’u destekleyen bir sunum görüntüleyicide açarak slayt gösterisi sırasında efekti görebilirsiniz.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, TransitionType, ShapeType
presentation = Presentation()
try:
first_slide = presentation.getSlides().get_Item(0)
rectangle = first_slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 100)
rectangle.getTextFrame().setText("Morph transition")
second_slide = presentation.getSlides().addClone(first_slide)
moved_rectangle = second_slide.getShapes().get_Item(0)
moved_rectangle.setX(moved_rectangle.getX() + 100)
moved_rectangle.setY(moved_rectangle.getY() + 50)
moved_rectangle.setWidth(moved_rectangle.getWidth() - 200)
moved_rectangle.setHeight(moved_rectangle.getHeight() - 10)
second_slide.getSlideShowTransition().setType(TransitionType.Morph)
presentation.save("morph-transition.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Morph Geçişi Türleri
TransitionMorphType enumarasyonu, Morph’un içeriği nasıl eşleştirdiğini ve canlandırdığını kontrol eder:
- ByObject her şekli bütün bir nesne olarak ele alır.
- ByWord metni, mümkün olduğunda kelimeleri eşleştirerek canlandırır.
- ByChar metni, mümkün olduğunda karakterleri eşleştirerek canlandırır.
setType metodunu Morph seçmek için, getValue metoduna erişmeden önce kullanın. Bu değer, MorphTransition sınıfının bir örneği olur ve onun setMorphType metodu eşleşme modunu seçer.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, TransitionType, TransitionMorphType, MorphTransition
presentation = Presentation("morph-transition.pptx")
try:
if presentation.getSlides().size() >= 2:
transition = presentation.getSlides().get_Item(1).getSlideShowTransition()
transition.setType(TransitionType.Morph)
transition_value = transition.getValue()
if isinstance(transition_value, MorphTransition):
morph_transition = transition_value
morph_transition.setMorphType(TransitionMorphType.ByWord)
presentation.save("morph-by-word.pptx", SaveFormat.Pptx)
else:
print("Morph transition options are unavailable.")
else:
print("The input presentation must contain at least two slides.")
finally:
presentation.dispose()
Geçiş Efektlerini Ayarla
Bazı geçişler, yön gibi ek seçenekler ya da etkinin siyah bir ekrandan başlayıp başlamadığını ortaya çıkarır. Mevcut seçenekler, setType ile seçilen geçişe bağlıdır. İlk önce tipi ayarlayın, ardından getValue üzerinden uygun sınıfı kullanın.
Aşağıdaki örnek, input.pptx dosyasının ilk slaytına Cut geçişi uygular. Geçişin siyah bir ekrandan başlaması için OptionalBlackTransition üzerinden setFromBlack metodunu çağırır.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, TransitionType, OptionalBlackTransition
presentation = Presentation("input.pptx")
try:
transition = presentation.getSlides().get_Item(0).getSlideShowTransition()
transition.setType(TransitionType.Cut)
transition_value = transition.getValue()
if isinstance(transition_value, OptionalBlackTransition):
cut_transition = transition_value
cut_transition.setFromBlack(True)
presentation.save("cut-from-black.pptx", SaveFormat.Pptx)
else:
print("Cut transition options are unavailable.")
finally:
presentation.dispose()
SSS
Bir slayt geçişinin oynatma hızını kontrol edebilir miyim?
Evet. Milisaniye cinsinden kesin bir efekt süresi gerektiğinde setDuration tercih edin. Önceden tanımlı bir TransitionSpeed (Slow, Medium veya Fast) kategorisi yeterli olduğunda ve açık bir süre ayarlanmamışsa setSpeed kullanın. Bu ayarlar geçiş efektini otomatik ilerleme gecikmesinden bağımsız olarak kontrol eder.
Bir geçişe ses ekleyebilir ve döngüye alabilir miyim?
Evet. Gömülü sesi setSound ile atayın, TransitionSoundMode enumarasyonundan StartSound değerini setSoundMode metoduna geçirin ve setSoundLoop metodunu True ile etkinleştirin. Ses, slayt gösterisinde bir sonraki ses olayına kadar döngüde çalar.
Her slayta aynı geçişi uygulamanın en hızlı yolu nedir?
Sunumun getSlides koleksiyonunu döngüye alıp, her slaytın geçişi için aynı değeri setType ile çağırın. Zamanlama ve efekt seçeneklerini aynı döngüde ayarlayarak davranışın slaytlar arasında tutarlı kalmasını sağlayın.
Bir slaytta şu anda hangi geçişin ayarlandığını nasıl kontrol edebilirim?
Slaytın getSlideShowTransition sonucunda getType metodunu çağırın. Bu, TransitionType enumarasyonundan bir değer döndürür; None_ değeri, hiçbir geçiş efektinin uygulanmadığını gösterir.