Alacsony kódú prezentációs műveletek PHP-ben

Áttekintés

A aspose.slides névtér statikus segédosztályokat biztosít a gyakori prezentációs műveletekhez. Ezek a segédek a gyakran használt objektummodell munkafolyamatokat fókuszált metódusokba csomagolják, így kevesebb kóddal konvertálhat vagy egyesíthet fájlokat, feldolgozhatja a prezentáció elemeit, összegyűjtheti az alakzatokat, és eltávolíthatja a nem használt tartalmat.

Az alacsony kódú segédek akkor a leghasznosabbak, amikor a művelet egy teljes fájlra vagy prezentációra vonatkozik, és az alapértelmezett munkafolyamat megfelel az igényeinek. Használja a teljes [Aspose.Slides objektummodellt], ha finomhangolt vezérlésre van szüksége egyedi diák, mesteroldalak, elrendezések, alakzatok, exportbeállítások vagy a prezentációelemek közötti kapcsolatok felett.

Az alábbi táblázat összefoglalja a rendelkezésre álló segédeket:

Segéd Mire használható
Convert Prezentáció konvertálása másik formátumba közvetlen fájl‑fájl hívással.
Merger Ugyanazon formátumú teljes prezentációfájlok egyesítése.
ForEach_ Visszahívás futtatása minden diára, alakzatra, bekezdésre vagy szövegrészre.
Collect Alakzatok lekérdezése a teljes prezentációból ismételt feldolgozás vagy elemzés céljából.
Compress Nem használt mesterelemek és elrendezések eltávolítása, valamint a beágyazott betűkészlet adatainak csökkentése.

Prezentáció konvertálása

Használja a Convert::autoByExtension metódust, ha a kimeneti fájlkiterjesztés elegendő az export formátum kiválasztásához. A metódus megnyitja a forrás prezentációt, meghatározza a szükséges formátumot a kimeneti útvonal alapján, és kiírja az eredményt.

use aspose\slides\Convert;

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

A Convert osztály további dedikált metódusokat kínál a PDF, SVG, JPEG, PNG és TIFF kimenethez. Használja a teljes objektummodellt, ha export előtt meg kell vizsgálnia vagy módosítania a prezentációt, vagy olyan exportbeállítást kell konfigurálnia, amelyet a kiválasztott segéd nem biztosít. Lásd a Convert Presentation oldalt a formátumspecifikus munkafolyamatokért és beállításokért.

Prezentációk egyesítése

Használja a Merger::process metódust, hogy egy hívással egyesítsen teljes prezentációfájlokat. A bemeneti prezentációknak ugyanazzal a fájlformátummal kell rendelkezniük.

use aspose\slides\Merger;

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

Ez a segéd akkor megfelelő, ha minden diát egyetlen eredményhez kell hozzáfűzni anélkül, hogy egyenként kiválasztaná vagy újraképezné őket. Használja a teljes objektummodellt, ha kiválasztott diákat kell egyesíteni, célmesteroldalt vagy elrendezést kell alkalmazni, szekciókat kifejezetten megőrizni, vagy különböző diaméreteket egyeztetni. Lásd a Merge Presentations oldalt ezekhez a forgatókönyvekhez.

Prezentációelemek bejárása

A ForEach_ osztály visszahívást hív meg minden kért típusú prezentációelemre. Elkerüli a beágyazott gyűjteményciklusokat, és kényelmes a teljes prezentációs vizsgálathoz vagy formázási módosításokhoz.

Az alábbi példa a ForEach_::slide, a ForEach_::shape, a ForEach_::paragraph és a ForEach_::portion metódusokat használja a megfelelő elemek ellenőrzésére:

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

Alapértelmezés szerint a teljes prezentáción belüli alakzat és szöveg bejárás magában foglalja a normál, mester és elrendezési diát is. Az includeNotes paraméterrel rendelkező túlterhelések a jegyzetdia feldolgozását is lehetővé teszik. Használjon közvetlen gyűjteményciklusokat, ha a bejárási sorrend, a korai kilépés, a visszahívás előtti szűrés vagy a részletes szülő‑gyermek vezérlés fontos.

Alakzatok összegyűjtése

Használja a Collect::shapes metódust, ha a prezentáció összes alakzatának gyűjteményére van szüksége, ahelyett hogy minden alakzatra visszahívást kapna. Ez akkor hasznos, ha ugyanazt a halmazt többször szűrni, számolni vagy feldolgozni kívánja.

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

Használja inkább a ForEach_::shape metódust, ha az egyes alakzatok azonnal kezelhetők, és nincs szükség az összegyűjtött eredmény megtartására.

Prezentáció tartalmának tömörítése

A Compress osztály eltávolíthatja a nem használt szerkezeti elemeket és csökkentheti a beágyazott betűkészlet adatait:

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

Először távolítsa el a nem használt elrendezéseket, majd a nem használt mesterelemeket, hogy az elrendezés tisztítása után hivatkozás nélkül maradt mester is eltávolítható legyen. Mentse az optimalizált prezentációt új fájlba, ha később szüksége lehet az eredeti mesterelemekre, elrendezésekre vagy a teljes beágyazott betűkészlet adatra. További részletekért lásd a Slide Master és Embedded Font oldalakat.

FAQ

Mikor kell az alacsony kódú API-t használni a teljes objektummodell helyett?

Használjon alacsony kódú segédeket, ha egy szabványos művelet egy teljes fájlra vagy prezentációra vonatkozik, és nem igényel részletes vezérlést az egyedi elemek felett. Használja a teljes objektummodellt, ha konkrét diákat kell kiválasztania, a mester‑ és elrendezés‑kapcsolatokat kell irányítania, közbenső állapotot kell ellenőriznie, vagy olyan viselkedést kell beállítania, amelyet a segéd nem biztosít.

Össze tudja-e a Merger különböző fájlformátumú prezentációkat?

Nem. A Merger::process megköveteli, hogy a bemeneti prezentációk ugyanabban a formátumban legyenek. Először konvertálja a bemeneti fájlokat közös formátumba, például a Convert::autoByExtension segítségével, majd egyesítse a konvertált fájlokat.

**A ForEach_ feldolgozza a mester, elrendezés és jegyzet diákat?**

A ForEach_::slide a normál prezentációs diákon iterál. A teljes prezentációra kiterjedő ForEach_::shape, ForEach_::paragraph és ForEach_::portion műveletek alapértelmezés szerint a normál, mester és elrendezési diákot is tartalmazzák. Használja a túlterheléseiket, ahol az includeNotes paraméter true értékre van állítva, hogy a jegyzetdiák is bekerüljenek.

**Mi a különbség a ForEach_::shape és a Collect::shapes között?**

A ForEach_::shape-t használja, ha minden alakzatot azonnal egy visszahívásban kíván feldolgozni. A Collect::shapes-t akkor használja, ha egy iterálható eredményre van szüksége, amely megtartható, szűrhető, számlálható vagy többször bejárható.

A Compress mindig kisebbre csökkenti a prezentáció fájlját?

Nem feltétlenül. Az eredmény attól függ, hogy a prezentáció tartalmaz‑e nem használt elrendezéseket, nem használt mesterelemeket vagy beágyazott betűket nem használt karakterekkel. Ha ezek egyike sem található, a megfelelő Compress műveletek nem feltétlenül csökkentik a fájlméretet.

**A ForEach_ vagy a Compress által végrehajtott módosítások automatikusan mentésre kerülnek?**

Nem. Ezek a segédek a betöltött Presentation objektumon memóriában dolgoznak. A [ForEach_] visszahívásban végzett módosítások vagy a Compress futtatása után hívja meg a Presentation::save metódust az eredmény írásához.

Kapcsolódó cikkek