Diaátmenetek kezelése prezentációkban Python via Java segítségével
Áttekintés
A diavetítés átmenetek szabályozzák, hogyan jelennek meg a diák egy diavetítés során. Az Aspose.Slides for Python via Java segítségével minden diára kiválaszthat egy átmenet‑effektust, beállíthatja a léptetést egérkattintással vagy időzítéssel, és módosíthatja az effektusra jellemző beállításokat. Ez a cikk Python példákat használ az átmenetek alkalmazására, pontos átmenet‑idők beállítására, a diák időzítésének kezelésére, valamint egy Morph átmenet létrehozására két dia között. A példák azt is bemutatják, hogyan menthetőek a beállítások PPTX fájlba.
Átmenet hozzáadása diához
Átmenet alkalmazásához töltse be a bemutatót a Presentation osztállyal, és érje el a dia átmeneti beállításait a getSlideShowTransition segítségével. Használja a setType metódust a TransitionType enumeráció egy értékével, majd mentse a bemutatót.
Az alábbi példa Circle átmenetet alkalmaz az első diára és Comb átmenetet a másodikra. Használjon egy input.pptx fájlt, amely legalább két diát tartalmaz.
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()
Speciális átmenet hozzáadása diához
Beállíthatja, hogy a dia mennyi ideig maradjon a képernyőn, és hogy egérkattintás lépteti‑e a diavetítést. A következő metódusok vezérlik ezt a viselkedést:
- setAdvanceOnClick lehetővé teszi a nézőnek, hogy egérkattintással lépjen tovább.
- setAdvanceAfter automatikus előrehaladást tesz lehetővé.
- setAdvanceAfterTime a késleltetést adja meg milliszekundumban az automatikus előrehaladás előtt.
Engedélyezze mind a kattintást, mind az időzített előrehaladást, így a néző kattintással vagy a várakozással léphet tovább. Ha csak az időzítőt szeretné használni, adjon át False értéket a setAdvanceOnClick metódusnak. A késleltetés azt szabályozza, mikor lép tovább a diavetítés; nem a vizuális átmenet időtartamát állítja be.
Ez a példa különböző effektusokat rendel az első három diához, és automatikus előrehaladást állít be 3, 5 és 7 másodperc után. Egérkattintással is léptethetők ezek a diák. Használjon egy input.pptx fájlt, amely legalább három diát tartalmaz.
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()
Az időzített előrehaladás engedélyezésének ellenőrzéséhez hívja meg a getAdvanceAfter metódust. A tárolt késleltetés önmagában nem jelzi, hogy az időzítő aktív.
A következő példa megnyitja a fenti példában mentett fájlt, jelentést készít minden engedélyezett időzítőről, és letiltja az automatikus előrehaladást a két másodpercnél nagyobb késleltetésű diák esetén. Ezekhez a diákhoz engedélyezi az egérkattintást, majd elmenti a módosított beállításokat.
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()
Az átmenet időzítésének pontos szabályozása
Használja a setDuration metódust az átmenet‑effektus pontos hossza milliszekundumban történő megadásához. A dia getSlideShowTransition metódusa ezekkel a beállításokkal rendelkezik a SlideShowTransition osztályon keresztül:
| Metódus | Cél |
|---|---|
| setDuration | Beállítja magának az átmenet‑effektusnak az időtartamát milliszekundumban. |
| setAdvanceAfterTime | Beállítja az automatikus előrehaladás előtti késleltetést milliszekundumban. A setAdvanceAfter meghívásával aktiválható ez az időzítő. |
| setSpeed | Kiválaszt egy előre definiált sebességkategóriát a TransitionSpeed enumerációból: Slow, Medium vagy Fast. Akkor használatos, ha nincs megadva pontos időtartam. |
A setDuration csak az átmenet‑effektust befolyásolja; nem határozza meg, mennyi ideig marad a dia látható. Az automatikus előrehaladás késleltetését külön kell beállítani. Ha nincs kifejezett időtartam megadva, az Aspose.Slides a átmenet típusa és a getSpeed értéke alapján határozza meg az effektus időtartamát.
Azonos időtartam alkalmazása minden diára
A konzisztens tempó érdekében alkalmazzon ugyanazt az effektust és pontos időtartamot minden diára. Ez a példa betölti a input.pptx fájlt, kiválasztja a Fade átmenetet a TransitionType enumerációból, és minden átmenetnek 750 milliszekundumos időt állít be. Külön engedélyezi az automatikus előrehaladást 5 000 milliszekundum után, letiltja az egérkattintásos léptetést, majd az eredményt PPTX‑ként menti.
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)
# Konfigurálja az automatikus előrehaladást az effektus időtartamától függetlenül.
transition.setAdvanceAfter(True)
transition.setAdvanceAfterTime(5000)
transition.setAdvanceOnClick(False)
presentation.save("precise-transitions.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Eltérő időtartamok beállítása egyedi diákhoz
Különböző diák különböző effektus‑időket használhatnak. Például a címdiára rövid átmenetet, a szekcióbevezetőre hosszabbat alkalmazhat. Ez a példa 500 milliszekundumot állít be az első diára, és 1 200 milliszekundumot a másodikra. Használjon egy input.pptx fájlt, amely legalább két diát tartalmaz.
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()
Átmenetek összehangolása animált kimenettel
Amikor animált GIF, HTML5 prezentáció vagy videó exportál, állítsa be a pontos átmenet‑időket a kimenet előtt, hogy az ütem a kívánt legyen. Például használjon 600 milliszekundumos fade‑ot a jelenetek között, és külön állítsa be minden dia előrehaladási késleltetését a narráció vagy a tartalom időtartamának megfelelően.
GIF‑nél és videónál a kimeneti képkockasebességet hangolja az effektus időtartamához: 600 milliszekundum 30 fps‑nél 18 képkockának felel meg. HTML5‑ben engedélyezze az animált átmeneteket az exportbeállításokban. Ellenőrizze a kiválasztott exportformátum által támogatott effektusokat és időzítési lehetőségeket, és tekintse meg az előnézetet a szinkronizáció ellenőrzéséhez.
Meglévő átmenet‑idő kiolvasása
Módosítás előtt hívja meg a getDuration metódust, hogy megállapítsa, van‑e tárolt explicite érték. A -1 érték azt jelenti, hogy nincs megadva explicit időtartam; egy nem negatív érték a tárolt időt milliszekundumban adja vissza. A nem beállított érték nem a lejátszási idő, mivel az Aspose.Slides a TransitionType‑ból és a getSpeed értékéből számolja ki. Egy átmenettípus beállítása inicializálhat egy időtartamot, ezért először ellenőrizze az eredeti beállításokat.
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 átmenet
A Morph átmenet animálja a változásokat az egymást követő diák objektumai között. Egy egyszerű Morph effektus létrehozásához klónozzon egy diát, mozdítsa vagy méretezze át az objektumot a klónon, és alkalmazza a Morph átmenetet a második diára. Így a megfelelő objektumok animálódnak az eredeti és a módosított állapotuk között.
Az alábbi példa egy szövegdobozt tartalmazó diát hoz létre, klónozza a diát, majd a klónon módosítja a téglalap pozícióját és méretét. Ezután a TransitionType enumerációból a Morph‑ot választja ki a második diára. Nyissa meg a mentett fájlt egy Morph‑ot támogató prezentációs nézőben, hogy lássa a hatást egy diavetítés során.
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 átmenet típusai
A TransitionMorphType enumeráció szabályozza, hogy a Morph hogyan párosítja és animálja a tartalmat:
- ByObject minden alakzatot egész objektumként kezel.
- ByWord a szöveget szavak szerint párosítja, ha lehetséges.
- ByChar a szöveget karakterek szerint párosítja, ha lehetséges.
Használja a setType metódust a Morph kiválasztásához, mielőtt a getValue metódust meghívná. A visszakapott érték ekkor egy MorphTransition osztálypéldány, amelynek a setMorphType metódusa a párosítási módot választja ki.
Ez a példa megnyitja az előző szakaszban létrehozott prezentációt, és a második diát szó‑alapú Morph animációra konfigurálja.
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()
Átmeneti effektusok beállítása
Néhány átmenet további opciókat is felkínál, például irányt vagy azt, hogy a hatás fekete képernyőből indul-e. A rendelkezésre álló opciók a setType által kiválasztott átmenettől függenek. Először állítsa be a típust, majd a megfelelő osztályt a getValue segítségével.
Az alábbi példa egy Cut átmenetet alkalmaz a input.pptx első diájára. A setFromBlack metódust az OptionalBlackTransition osztályon keresztül hívja meg, hogy a tranzíció fekete képernyőből induljon.
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()
GYIK
Kezelhetem a diák átmeneteinek lejátszási sebességét?
Igen. Használja a setDuration metódust, ha pontos effektus‑időt szeretne megadni milliszekundumban. Használja a setSpeed metódust, ha egy előre definiált TransitionSpeed kategória – Slow, Medium vagy Fast – elegendő, és nincs explicite beállítva időtartam. Ezek a beállítások csak az átmenet‑effektust szabályozzák, függetlenül az automatikus előrehaladási késleltetéstől.
Csatolhatok hangot az átmenethez, és hagyhatom, hogy ismétlődjön?
Igen. A beágyazott hangot a setSound metódussal adhatja hozzá, a TransitionSoundMode enumerációból a StartSound‑t a setSoundMode metódusnak adja át, és a setSoundLoop metódussal True értéket állít be. A hang addig ismétlődik, amíg a diavetítésben nem következik egy új hangesemény.
Mi a leggyorsabb módja annak, hogy ugyanazt az átmenetet alkalmazzam minden diára?
Iterálja végig a prezentáció getSlides gyűjteményét, és minden dia átmenetére hívja meg a setType metódust ugyanazzal az értékkel. Az időzítési és effektus‑opciókat ugyanabban a ciklusban állítsa be, hogy a viselkedés minden dián konzisztens legyen.
Hogyan tudom ellenőrizni, hogy jelenleg milyen átmenet van beállítva egy dián?
Hívja meg a getType metódust a dia getSlideShowTransition eredményén. Ez egy értéket ad vissza a TransitionType enumerációból; a None_ azt jelenti, hogy nincs alkalmazva átmenet‑effektus.