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:
- Compress::removeUnusedLayoutSlides eltávolítja azokat az elrendezési diát, amelyeket egyetlen normál dia sem hivatkozik.
- Compress::removeUnusedMasterSlides eltávolítja a már nem használt mesterdiákat.
- Compress::compressEmbeddedFonts eltávolítja a beágyazott betűkészletekből a nem használt karaktereket.
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.