Low-Code-Präsentationsoperationen in PHP
Übersicht
Der aspose.slides Namespace bietet statische Hilfsklassen für gängige Präsentationsoperationen. Diese Helfer kapseln häufig genutzte Objektmodell‑Workflows in fokussierten Methoden, sodass Sie Dateien konvertieren oder zusammenführen, Präsentationselemente verarbeiten, Formen sammeln und ungenutzten Inhalt mit weniger Code entfernen können.
Low‑Code‑Helfer sind am nützlichsten, wenn die Operation auf eine komplette Datei oder Präsentation angewendet wird und der Standard‑Workflow Ihren Anforderungen entspricht. Verwenden Sie das vollständige Aspose.Slides object model, wenn Sie eine feinkörnige Kontrolle über einzelne Folien, Master, Layouts, Formen, Exporteinstellungen oder Beziehungen zwischen Präsentationselementen benötigen.
Die folgende Tabelle fasst die verfügbaren Helfer zusammen:
| Helfer | 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 eines Callbacks für jede Folie, Form, Absatz oder Textteil. |
| Collect | Abrufen von Formen aus der gesamten Präsentation für wiederholte Verarbeitung oder Analyse. |
| Compress | Entfernen ungenutzter Master und Layouts sowie Reduzieren eingebetteter Schriftartdaten. |
Konvertieren einer Präsentation
Verwenden Sie Convert::autoByExtension, wenn die Dateierweiterung der Ausgabedatei ausreicht, um das Exportformat auszuwählen. Die Methode öffnet die Quellpräsentation, ermittelt das erforderliche Format aus dem Ausgabepfad und schreibt das Ergebnis.
use aspose\slides\Convert;
Convert::autoByExtension("input.pptx", "output.pdf");
Die Convert Klasse bietet außerdem spezielle 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 Präsentation konvertieren für formatspezifische 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 haben.
use aspose\slides\Merger;
$inputFiles = ["part-1.pptx", "part-2.pptx"];
Merger::process($inputFiles, "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 -Layout anwenden, Abschnitte explizit erhalten oder unterschiedliche Foliengrößen angleichen müssen. Siehe Präsentationen zusammenführen für diese Szenarien.
Durchlaufen von Präsentationselementen
Die ForEach_ Klasse ruft für jeden angeforderten Typ von Präsentationselement ein Callback auf. Sie vermeidet verschachtelte Sammlungsschleifen und ist praktisch für eine Präsentations‑weite Inspektion oder Formatierungsänderungen.
Das folgende Beispiel verwendet ForEach_::slide, ForEach_::shape, ForEach_::paragraph und ForEach_::portion, um die entsprechenden Elemente zu inspizieren:
use aspose\slides\ForEach_;
use aspose\slides\Presentation;
class SlideCallback {
public function invoke($slide, $index): void {
$slideIndex = java_values($index);
$shapeCount = java_values($slide->getShapes()->size());
echo sprintf("Slide %d: %d shapes", $slideIndex, $shapeCount) . PHP_EOL;
}
}
class ShapeCallback {
public function invoke($shape, $slide, $index): void {
$shapeIndex = java_values($index);
$slideType = java_values($slide->getClass()->getSimpleName());
$shapeName = java_values($shape->getName());
echo sprintf("Shape %d on %s: %s", $shapeIndex, $slideType, $shapeName) . PHP_EOL;
}
}
class ParagraphCallback {
public function invoke($paragraph, $slide, $index): void {
$paragraphIndex = java_values($index);
$slideType = java_values($slide->getClass()->getSimpleName());
$text = java_values($paragraph->getText());
echo sprintf("Paragraph %d on %s: %s", $paragraphIndex, $slideType, $text) . PHP_EOL;
}
}
class PortionCallback {
public function invoke($portion, $paragraph, $slide, $index): void {
$portionIndex = java_values($index);
$slideType = java_values($slide->getClass()->getSimpleName());
$text = java_values($portion->getText());
echo sprintf("Portion %d on %s: %s", $portionIndex, $slideType, $text) . PHP_EOL;
}
}
$presentation = new Presentation("input.pptx");
try {
$slideCallback = java_closure(new SlideCallback(), null, java('com.aspose.slides.ForEach_$ForEachSlideCallback'));
$shapeCallback = java_closure(new ShapeCallback(), null, java('com.aspose.slides.ForEach_$ForEachShapeCallback'));
$paragraphCallback = java_closure(new ParagraphCallback(), null, java('com.aspose.slides.ForEach_$ForEachParagraphCallback'));
$portionCallback = java_closure(new PortionCallback(), null, java('com.aspose.slides.ForEach_$ForEachPortionCallback'));
ForEach_::slide($presentation, $slideCallback);
ForEach_::shape($presentation, $shapeCallback);
ForEach_::paragraph($presentation, $paragraphCallback);
ForEach_::portion($presentation, $portionCallback);
} finally {
$presentation->dispose();
}
Standardmäßig umfasst das Durchlaufen von Formen und Text in der gesamten Präsentation normale, Master‑ und Layout‑Folien. Überladungen mit einem includeNotes‑Parameter können auch Notizfolien verarbeiten. Verwenden Sie direkte Sammlungsschleifen, wenn die Durchlaufreihenfolge, ein vorzeitiger Abbruch, Filterung vor dem Aufruf des Callbacks oder eine detaillierte Eltern‑Kind‑Steuerung wichtig sind.
Formen sammeln
Verwenden Sie Collect::shapes, wenn Sie eine Sammlung aller Formen in einer Präsentation benötigen, anstatt ein Callback für jede Form. Dies ist nützlich, wenn dieselbe Menge mehrfach gefiltert, gezählt oder verarbeitet werden soll.
use aspose\slides\Collect;
use aspose\slides\Presentation;
$presentation = new Presentation("input.pptx");
try {
$shapes = Collect::shapes($presentation);
foreach ($shapes as $shape) {
$shapeName = java_values($shape->getName());
$shapeType = java_values($shape->getClass()->getSimpleName());
echo sprintf("%s: %s", $shapeName, $shapeType) . PHP_EOL;
}
} finally {
$presentation->dispose();
}
Verwenden Sie stattdessen ForEach_::shape, wenn jede Form sofort verarbeitet werden kann und Sie das gesammelte Ergebnis nicht behalten müssen.
Präsentationsinhalt komprimieren
Die Compress Klasse kann ungenutzte Strukturelemente entfernen und eingebettete Schriftartdaten reduzieren:
- Compress::removeUnusedLayoutSlides entfernt Layout‑Folien, die von keiner normalen Folie referenziert werden.
- Compress::removeUnusedMasterSlides entfernt Master‑Folien, die nicht mehr verwendet werden.
- Compress::compressEmbeddedFonts entfernt ungenutzte Zeichen aus eingebetteten Schriftarten.
use aspose\slides\Compress;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("input.pptx");
try {
Compress::removeUnusedLayoutSlides($presentation);
Compress::removeUnusedMasterSlides($presentation);
Compress::compressEmbeddedFonts($presentation);
$presentation->save("compressed.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Entfernen Sie ungenutzte Layouts vor ungenutzten Mastern, damit ein Master, der nach der Layout‑Bereinigung nicht mehr referenziert wird, ebenfalls entfernt 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 Folienmaster und Eingebettete Schriftart.
FAQ
Wann sollte ich die Low‑Code‑API anstelle des vollständigen Objektmodells verwenden?
Verwenden Sie Low‑Code‑Helfer, wenn eine Standard‑Operation auf eine komplette Datei oder Präsentation angewendet wird und keine detaillierte Kontrolle über einzelne Elemente erfordert. Verwenden Sie das vollständige Objektmodell, wenn Sie bestimmte Folien auswählen, Master‑ und Layout‑Beziehungen steuern, den Zwischenzustand prüfen oder ein Verhalten konfigurieren müssen, das der Helfer nicht bereitstellt.
Kann Merger Präsentationen in unterschiedlichen Dateiformaten kombinieren?
Nein. Merger::process erfordert, dass die Eingabedateien im selben Format vorliegen. Konvertieren Sie die Eingabedateien zunächst in ein gemeinsames Format, beispielsweise mit Convert::autoByExtension, und führen Sie anschließend die konvertierten Dateien zusammen.
**Verarbeitet ForEach_ Master‑, Layout‑ und Notiz‑Folien?**
ForEach_::slide iteriert über normale Präsentationsfolien. Präsentationsweite ForEach_::shape, ForEach_::paragraph und ForEach_::portion Operationen schließen standardmäßig normale, Master‑ und Layout‑Folien ein. Verwenden Sie deren Überladungen mit includeNotes auf true, um Notiz‑Folien einzubeziehen.
**Was ist der Unterschied zwischen ForEach_::shape und Collect::shapes?**
Verwenden Sie ForEach_::shape, um jede Form sofort über ein Callback zu verarbeiten. Verwenden Sie Collect::shapes, wenn Sie ein iterierbares Ergebnis benötigen, das behalten, gefiltert, gezählt oder mehrfach durchlaufen werden kann.
Reduziert Compress immer die Dateigröße der Präsentation?
Nicht unbedingt. Das Ergebnis hängt davon ab, ob die Präsentation ungenutzte Layouts, ungenutzte Master oder eingebettete Schriftarten mit ungenutzten Zeichen enthält. Wenn keines davon vorhanden ist, können die entsprechenden Compress Operationen die Dateigröße möglicherweise nicht reduzieren.
**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.