Opérations de présentation low-code en PHP

Vue d’ensemble

Le espace de noms aspose.slides fournit des classes d’assistance statiques pour les opérations courantes sur les présentations. Ces assistants enveloppent les flux de travail du modèle d’objet fréquemment utilisés dans des méthodes ciblées, ce qui vous permet de convertir ou fusionner des fichiers, de traiter les éléments de la présentation, de collecter des formes et de supprimer le contenu inutilisé avec moins de code.

Les assistants low‑code sont les plus utiles lorsque l’opération s’applique à un fichier ou une présentation entière et que le flux de travail par défaut correspond à vos exigences. Utilisez le modèle d’objet Aspose.Slides complet lorsque vous avez besoin d’un contrôle granulaire sur les diapositives individuelles, les maîtres, les mises en page, les formes, les paramètres d’exportation ou les relations entre les éléments de la présentation.

Le tableau suivant résume les assistants disponibles :

Assistant Utilisation
Convert Convertir une présentation vers un autre format avec un appel direct fichier‑à‑fichier.
Merger Combiner des fichiers de présentation complets du même format.
ForEach_ Exécuter un rappel pour chaque diapositive, forme, paragraphe ou portion de texte.
Collect Récupérer les formes de l’ensemble de la présentation pour un traitement ou une analyse répétés.
Compress Supprimer les maîtres et mises en page inutilisés et réduire les données de police incorporées.

Convertir une présentation

Utilisez Convert::autoByExtension lorsque l’extension du fichier de sortie suffit à sélectionner le format d’exportation. La méthode ouvre la présentation source, détermine le format requis à partir du chemin de sortie et écrit le résultat.

use aspose\slides\Convert;

Convert::autoByExtension("input.pptx", "output.pdf");

La classe Convert propose également des méthodes dédiées pour les sorties PDF, SVG, JPEG, PNG et TIFF. Utilisez le modèle d’objet complet lorsque vous devez inspecter ou modifier la présentation avant l’exportation ou configurer une option d’exportation qui n’est pas exposée par l’assistant sélectionné. Voir Convert Presentation pour les flux de travail et options spécifiques à chaque format.

Fusionner des présentations

Utilisez Merger::process pour combiner des fichiers de présentation complets en un seul appel. Les présentations d’entrée doivent avoir le même format de fichier.

use aspose\slides\Merger;

$inputFiles = ["part-1.pptx", "part-2.pptx"];
Merger::process($inputFiles, "merged.pptx");

L’assistant est approprié lorsque toutes les diapositives doivent être ajoutées à un seul résultat sans les sélectionner ou les remapper individuellement. Utilisez le modèle d’objet complet lorsque vous devez fusionner des diapositives sélectionnées, appliquer un maître ou une mise en page de destination, préserver explicitement les sections ou concilier des tailles de diapositives différentes. Voir Merge Presentations pour ces scénarios.

Parcourir les éléments de la présentation

La classe ForEach_ invoque un rappel pour chaque type d’élément de présentation demandé. Elle évite les boucles de collection imbriquées et est pratique pour l’inspection ou les modifications de format à l’échelle de la présentation.

L’exemple suivant utilise ForEach_::slide, ForEach_::shape, ForEach_::paragraph et ForEach_::portion pour inspecter les éléments correspondants :

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();
}

Par défaut, le parcours des formes et du texte à l’échelle de la présentation inclut les diapositives normales, maîtres et de mise en page. Les surcharges avec un paramètre includeNotes peuvent également traiter les diapositives de notes. Utilisez des boucles de collection directes lorsque l’ordre de parcours, la sortie anticipée, le filtrage avant l’invocation du rappel ou le contrôle détaillé parent‑enfant sont importants.

Collecter les formes

Utilisez Collect::shapes lorsque vous avez besoin d’une collection de toutes les formes d’une présentation plutôt que d’un rappel pour chaque forme. Cela est utile lorsque le même ensemble sera filtré, compté ou traité plusieurs fois.

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();
}

Utilisez plutôt ForEach_::shape lorsque chaque forme peut être traitée immédiatement et que vous n’avez pas besoin de conserver le résultat collecté.

Compresser le contenu de la présentation

La classe Compress peut supprimer les éléments structurels inutilisés et réduire les données de polices incorporées :

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();
}

Supprimez d’abord les mises en page inutilisées, puis les maîtres inutilisés afin qu’un maître devenu non référencé après le nettoyage des mises en page puisse également être supprimé. Enregistrez la présentation optimisée dans un nouveau fichier si vous devez éventuellement conserver les maîtres, mises en page ou l’intégralité des données de polices incorporées d’origine. Pour plus de détails, consultez Slide Master et Embedded Font.

FAQ

Quand devrais‑je utiliser l’API low‑code plutôt que le modèle d’objet complet ?

Utilisez les assistants low‑code lorsqu’une opération standard s’applique à un fichier ou une présentation complète et ne nécessite pas de contrôle détaillé sur les éléments individuels. Utilisez le modèle d’objet complet lorsque vous devez sélectionner des diapositives spécifiques, contrôler les relations maître‑mise en page, inspecter l’état intermédiaire ou configurer un comportement que l’assistant n’expose pas.

Le Merger peut‑il combiner des présentations dans différents formats de fichier ?

Non. Merger::process nécessite que les présentations d’entrée soient dans le même format. Convertissez d’abord les fichiers d’entrée dans un format commun, par exemple avec Convert::autoByExtension, puis fusionnez les fichiers convertis.

**Le ForEach_ traite‑t‑il les diapositives maître, mise en page et notes ?**

ForEach_::slide parcourt les diapositives normales de la présentation. Les opérations ForEach_::shape, ForEach_::paragraph et ForEach_::portion à l’échelle de la présentation incluent, par défaut, les diapositives normales, maîtres et de mise en page. Utilisez leurs surcharges avec includeNotes à true pour inclure les diapositives de notes.

**Quelle est la différence entre ForEach_::shape et Collect::shapes ?**

Utilisez ForEach_::shape pour traiter chaque forme immédiatement via un rappel. Utilisez Collect::shapes lorsque vous avez besoin d’un résultat itérable pouvant être conservé, filtré, compté ou parcouru plusieurs fois.

Compress réduit‑il toujours la taille du fichier de présentation ?

Pas nécessairement. Le résultat dépend du fait que la présentation contienne ou non des mises en page inutilisées, des maîtres inutilisés ou des polices incorporées avec des caractères inutilisés. Si aucun de ces éléments n’est présent, les opérations Compress correspondantes peuvent ne pas réduire la taille du fichier.

**Les modifications effectuées par ForEach_ ou Compress sont‑elles enregistrées automatiquement ?**

Non. Ces assistants opèrent sur l’objet Presentation chargé en mémoire. Après avoir modifié des éléments dans un rappel ForEach_ ou exécuté Compress, appelez Presentation::save pour écrire le résultat.

Articles associés