Niskokodowe operacje na prezentacjach w PHP

Przegląd

Przestrzeń nazw aspose.slides zapewnia statyczne klasy pomocnicze do typowych operacji na prezentacjach. Te pomocniki kapsułkują często używane przepływy pracy modelu obiektowego w skoncentrowanych metodach, dzięki czemu możesz konwertować lub scalać pliki, przetwarzać elementy prezentacji, zbierać kształty i usuwać nieużywaną zawartość przy mniejszej ilości kodu.

Pomocniki niskokodowe są najprzydatniejsze, gdy operacja dotyczy całego pliku lub prezentacji i domyślny przepływ pracy spełnia Twoje wymagania. Użyj pełnego Aspose.Slides object model gdy potrzebujesz precyzyjnej kontroli nad poszczególnymi slajdami, wzorcami, układami, kształtami, ustawieniami eksportu lub zależnościami między elementami prezentacji.

Poniższa tabela podsumowuje dostępne pomocniki:

Pomocnik Zastosowanie
Convert Konwertowanie prezentacji na inny format przy użyciu bezpośredniego wywołania plik-do-pliku.
Merger Łączenie pełnych plików prezentacji tego samego formatu.
ForEach_ Uruchamianie funkcji zwrotnej dla każdego slajdu, kształtu, akapitu lub fragmentu tekstu.
Collect Pobieranie kształtów z całej prezentacji w celu wielokrotnego przetwarzania lub analizy.
Compress Usuwanie nieużywanych wzorców i układów oraz redukcja osadzonych danych czcionek.

Konwertowanie prezentacji

Użyj Convert::autoByExtension gdy rozszerzenie pliku wyjściowego wystarczy do wybrania formatu eksportu. Metoda otwiera źródłową prezentację, określa wymagany format na podstawie ścieżki wyjściowej i zapisuje wynik.

use aspose\slides\Convert;

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

Klasa Convert oferuje również dedykowane metody dla wyjścia PDF, SVG, JPEG, PNG i TIFF. Użyj pełnego modelu obiektowego, gdy potrzebujesz sprawdzić lub zmodyfikować prezentację przed eksportem lub skonfigurować opcję eksportu, której nie udostępnia wybrany pomocnik. Zobacz Convert Presentation po szczegółowe przepływy pracy i opcje zależne od formatu.

Scalanie prezentacji

Użyj Merger::process aby połączyć pełne pliki prezentacji jednym wywołaniem. Prezentacje wejściowe muszą mieć ten sam format pliku.

use aspose\slides\Merger;

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

Ten pomocnik jest odpowiedni, gdy wszystkie slajdy mają być dołączone do jednego wyniku bez indywidualnego wybierania lub przemapowywania. Użyj pełnego modelu obiektowego, gdy potrzebujesz scalać wybrane slajdy, zastosować docelowy wzorzec lub układ, zachować sekcje explicite, lub dopasować różne rozmiary slajdów. Zobacz Merge Presentations dla tych scenariuszy.

Iterowanie po elementach prezentacji

Klasa ForEach_ wywołuje funkcję zwrotną dla każdego żądanego typu elementu prezentacji. Unika ona zagnieżdżonych pętli kolekcji i jest wygodna przy inspekcji całej prezentacji lub zmianach formatowania.

Poniższy przykład używa ForEach_::slide, ForEach_::shape, ForEach_::paragraph i ForEach_::portion do inspekcji odpowiednich elementów:

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

Domyślnie, przeglądanie kształtów i tekstu w całej prezentacji obejmuje normalne, wzorcowe i układowe slajdy. Przeciążenia z parametrem includeNotes mogą także przetwarzać slajdy notatek. Używaj bezpośrednich pętli kolekcji, gdy istotny jest kolejność przeglądania, wczesne zakończenie, filtrowanie przed wywołaniem funkcji zwrotnej lub szczegółowa kontrola relacji rodzic-dziecko.

Zbieranie kształtów

Użyj Collect::shapes gdy potrzebujesz kolekcji wszystkich kształtów w prezentacji zamiast funkcji zwrotnej dla każdego kształtu. Jest to przydatne, gdy ten sam zestaw będzie filtrowany, liczony lub przetwarzany wielokrotnie.

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

Użyj ForEach_::shape zamiast tego, gdy każdy kształt może być obsłużony od razu i nie musisz przechowywać zebranego wyniku.

Kompresja zawartości prezentacji

Klasa Compress może usuwać nieużywane elementy strukturalne i redukować osadzone dane czcionek:

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

Usuń nieużywane układy przed nieużywanymi wzorcami, aby wzorzec, który stanie się nieodwołany po usunięciu układów, również mógł zostać usunięty. Zapisz zoptymalizowaną prezentację do nowego pliku, jeśli później możesz potrzebować oryginalnych wzorców, układów lub pełnych osadzonych danych czcionek. Po więcej szczegółów zobacz Slide Master oraz Embedded Font.

FAQ

Kiedy powinienem używać interfejsu API niskokodowego zamiast pełnego modelu obiektowego?

Używaj pomocników niskokodowych, gdy standardowa operacja dotyczy całego pliku lub prezentacji i nie wymaga szczegółowej kontroli nad poszczególnymi elementami. Używaj pełnego modelu obiektowego, gdy musisz wybrać konkretne slajdy, kontrolować zależności wzorca i układu, sprawdzić stan pośredni lub skonfigurować zachowanie, którego pomocnik nie udostępnia.

Czy Merger może łączyć prezentacje w różnych formatach plików?

Nie. Merger::process wymaga, aby prezentacje wejściowe były w tym samym formacie. Najpierw skonwertuj pliki wejściowe do wspólnego formatu, na przykład przy użyciu Convert::autoByExtension, a następnie scal przetworzone pliki.

**Czy ForEach_ przetwarza slajdy wzorca, układu i notatek?**

ForEach_::slide iteruje przez normalne slajdy prezentacji. Operacje ForEach_::shape, ForEach_::paragraph i ForEach_::portion obejmują domyślnie normalne, wzorcowe i układowe slajdy. Użyj ich przeciążeń z parametrem includeNotes ustawionym na true, aby uwzględnić slajdy notatek.

**Jaka jest różnica między ForEach_::shape a Collect::shapes?**

Użyj ForEach_::shape aby przetwarzać każdy kształt od razu przy użyciu funkcji zwrotnej. Użyj Collect::shapes, gdy potrzebny jest iterowalny rezultat, który może być zachowany, filtrowany, liczony lub przeglądany wielokrotnie.

Czy Compress zawsze zmniejsza rozmiar pliku prezentacji?

Niekoniecznie. Wynik zależy od tego, czy prezentacja zawiera nieużywane układy, nieużywane wzorce lub osadzone czcionki z nieużywanymi znakami. Jeśli żadne z tych elementów nie występują, odpowiadające operacje Compress mogą nie zmniejszyć rozmiaru pliku.

**Czy zmiany wprowadzone przez ForEach_ lub Compress są zapisywane automatycznie?**

Nie. Te pomocniki działają na załadowanym w pamięci obiekcie Presentation. Po zmianie elementów w wywołaniu zwrotnym ForEach_ lub po uruchomieniu Compress, wywołaj Presentation::save, aby zapisać wynik.

Powiązane artykuły