Low-Code-Präsentationsoperationen in Python via Java
Übersicht
Die Aspose.Slides für Python via Java API stellt statische Hilfsklassen für gängige Präsentationsoperationen bereit. Diese Helfer kapseln häufig genutzte Workflows des Objektmodells in fokussierten Methoden, sodass Sie Dateien konvertieren oder zusammenführen, Präsentationselemente verarbeiten, Shapes sammeln und nicht verwendete Inhalte mit weniger Code entfernen können.
Low‑Code‑Helfer sind am nützlichsten, wenn die Operation auf eine gesamte Datei oder Präsentation angewendet wird und der Standard‑Workflow Ihren Anforderungen entspricht. Verwenden Sie das vollständige Aspose.Slides‑Objektmodell, wenn Sie eine feinkörnige Kontrolle über einzelne Folien, Master, Layouts, Shapes, Exporteinstellungen oder Beziehungen zwischen Präsentationselementen benötigen.
Die folgende Tabelle fasst die verfügbaren Helfer zusammen:
| Hilfsmittel | Verwendungszweck |
|---|---|
| Convert | Konvertieren einer Präsentation in ein anderes Format mit einem direkten Datei‑zu‑Datei‑Aufruf. |
| Merger | Kombinieren kompletter Präsentationsdateien desselben Formats. |
| ForEach | Ausführen einer Aktion für jede Folie, jedes Shape, jeden Absatz oder Textabschnitt. |
| Collect | Abrufen von Shapes aus der gesamten Präsentation für wiederholte Verarbeitung oder Analyse. |
| Compress | Entfernen nicht genutzter Master und Layouts sowie Reduzierung eingebetteter Schriftartdaten. |
Eine Präsentation konvertieren
Verwenden Sie Convert.autoByExtension, wenn die Dateierweiterung des Ausgabepfads ausreicht, um das Exportformat zu bestimmen. Die Methode öffnet die Quellpräsentation, ermittelt das erforderliche Format aus dem Ausgabepfad und schreibt das Ergebnis.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Convert
Convert.autoByExtension("input.pptx", "output.pdf")
Die Convert‑Klasse bietet außerdem dedizierte Methoden für PDF-, SVG-, JPEG-, PNG‑ und TIFF‑Ausgabe. Verwenden Sie das vollständige Objektmodell, wenn Sie die Präsentation vor dem Export prüfen oder ändern oder eine Exportoption konfigurieren müssen, die vom ausgewählten Helfer nicht bereitgestellt wird. Siehe Convert Presentation für format‑spezifische Workflows und Optionen.
Präsentationen zusammenführen
Verwenden Sie Merger.process, um komplette Präsentationsdateien mit einem Aufruf zu kombinieren. Die Eingabedateien müssen dasselbe Dateiformat besitzen.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Merger
input_files = jpype.JArray(jpype.JString)(["part-1.pptx", "part-2.pptx"])
Merger.process(input_files, "merged.pptx")
Der Helfer ist geeignet, wenn alle Folien zu einem Ergebnis hinzugefügt werden sollen, ohne sie einzeln auszuwählen oder neu zuzuordnen. Verwenden Sie das vollständige Objektmodell, wenn Sie ausgewählte Folien zusammenführen, einen Ziel‑Master oder ein Layout anwenden, Abschnitte explizit erhalten oder unterschiedliche Foliengrößen abgleichen müssen. Siehe Merge Presentations für diese Szenarien.
Durch Präsentationselemente iterieren
Die ForEach‑Klasse ruft einen Callback für jeden angeforderten Typ von Präsentationselement auf. Sie vermeidet verschachtelte Schleifen über Sammlungen und ist praktisch für prüfungen‑ oder formatierungsänderungen auf gesamten Präsentationen.
Das folgende Beispiel verwendet ForEach.slide, ForEach.shape, ForEach.paragraph und ForEach.portion, um die entsprechenden Elemente zu prüfen:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ForEach, Presentation
def print_slide(slide, index):
print(f"Slide {index}: {slide.getShapes().size()} shapes")
def print_shape(shape, slide, index):
print(f"Shape {index} on {slide.getClass().getSimpleName()}: {shape.getName()}")
def print_paragraph(paragraph, slide, index):
print(f"Paragraph {index} on {slide.getClass().getSimpleName()}: {paragraph.getText()}")
def print_portion(portion, paragraph, slide, index):
print(f"Portion {index} on {slide.getClass().getSimpleName()}: {portion.getText()}")
presentation = Presentation("input.pptx")
try:
ForEach.slide(presentation, print_slide)
ForEach.shape(presentation, print_shape)
ForEach.paragraph(presentation, print_paragraph)
ForEach.portion(presentation, print_portion)
finally:
presentation.dispose()
Standardmäßig umfasst die durchlaufweite Shape‑ und Text‑Traversal normale, Master‑ und Layout‑Folien. Überladungen mit einem includeNotes‑Parameter können zudem Notizfolien verarbeiten. Verwenden Sie direkte Schleifen, wenn die Traversierungsreihenfolge, ein früher Abbruch, Filterung vor dem Callback oder eine detaillierte Eltern‑Kind‑Steuerung wichtig sind.
Shapes sammeln
Verwenden Sie Collect.shapes, wenn Sie eine Sammlung aller Shapes einer Präsentation benötigen und nicht für jedes Shape einen Callback ausführen wollen. Dies ist nützlich, wenn dieselbe Menge mehrfach gefiltert, gezählt oder verarbeitet werden soll.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Collect, Presentation
presentation = Presentation("input.pptx")
try:
shapes = Collect.shapes(presentation)
for shape in shapes:
print(f"{shape.getName()}: {shape.getClass().getSimpleName()}")
finally:
presentation.dispose()
Verwenden Sie stattdessen ForEach.shape, wenn jedes Shape sofort bearbeitet werden kann und Sie das gesammelte Ergebnis nicht behalten müssen.
Präsentationsinhalt komprimieren
Die Compress‑Klasse kann nicht genutzte strukturelle Elemente entfernen und eingebettete Schriftartdaten reduzieren:
- removeUnusedLayoutSlides entfernt Layout‑Folien, auf die keine normale Folie verweist.
- removeUnusedMasterSlides entfernt Master‑Folien, die nicht mehr verwendet werden.
- compressEmbeddedFonts entfernt nicht genutzte Zeichen aus eingebetteten Schriften.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Compress, Presentation, SaveFormat
presentation = Presentation("input.pptx")
try:
Compress.removeUnusedLayoutSlides(presentation)
Compress.removeUnusedMasterSlides(presentation)
Compress.compressEmbeddedFonts(presentation)
presentation.save("compressed.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Entfernen Sie zunächst nicht genutzte Layouts, bevor Sie nicht genutzte Master entfernen, damit ein Master, der nach der Layout‑Bereinigung nicht mehr referenziert wird, ebenfalls gelöscht werden kann. Speichern Sie die optimierte Präsentation in einer neuen Datei, falls Sie später die ursprünglichen Master, Layouts oder die vollständigen eingebetteten Schriftartdaten benötigen. Weitere Details finden Sie unter Slide Master und Embedded Font.
FAQ
Wann sollte ich die Low‑Code‑API statt des vollständigen Objektmodells verwenden?
Verwenden Sie Low‑Code‑Helfer, wenn eine Standard‑Operation auf eine komplette Datei oder Präsentation zutrifft und keine detaillierte Kontrolle über einzelne Elemente erforderlich ist. Nutzen Sie das vollständige Objektmodell, wenn Sie bestimmte Folien auswählen, Beziehungen zwischen Master und Layout steuern, Zwischenzustände prüfen oder Verhalten konfigurieren müssen, das der Helfer nicht bereitstellt.
Kann Merger Präsentationen in unterschiedlichen Dateiformaten kombinieren?
Nein. Merger.process erfordert Eingabedateien im selben Format. Konvertieren Sie die Eingabedateien zunächst in ein gemeinsames Format, zum Beispiel mit Convert.autoByExtension, und führen Sie anschließend die konvertierten Dateien zusammen.
Verarbeitet ForEach Master‑, Layout‑ und Notizfolien?
ForEach.slide iteriert über normale Präsentationsfolien. Präsentationsweite ForEach.shape, ForEach.paragraph und ForEach.portion schließen standardmäßig normale, Master‑ und Layout‑Folien ein. Verwenden Sie deren Überladungen mit includeNotes = True, um Notizfolien einzubeziehen.
Was ist der Unterschied zwischen ForEach.shape und Collect.shapes?
Verwenden Sie ForEach.shape, um jedes Shape sofort über einen Callback zu verarbeiten. Verwenden Sie Collect.shapes, wenn Sie ein iterierbares Ergebnis benötigen, das Sie behalten, filtern, zählen oder mehrfach durchlaufen können.
Macht Compress immer die Präsentationsdatei kleiner?
Nicht unbedingt. Das Ergebnis hängt davon ab, ob die Präsentation nicht genutzte Layouts, nicht genutzte Master oder eingebettete Schriften mit ungenutzten Zeichen enthält. Wenn keine dieser Komponenten vorhanden ist, reduzieren die entsprechenden Compress‑Operationen die Dateigröße möglicherweise nicht.
Werden Änderungen, die durch ForEach oder Compress vorgenommen wurden, automatisch gespeichert?
Nein. Diese Helfer arbeiten auf dem geladenen Presentation‑Objekt im Speicher. Nachdem Sie Elemente in einem ForEach‑Callback geändert oder Compress ausgeführt haben, rufen Sie Presentation.save auf, um das Ergebnis zu schreiben.