Λειτουργίες Παρουσίασης Χαμηλού Κώδικα σε PHP
Επισκόπηση
Το όνομα χώρου aspose.slides παρέχει στατικές βοηθητικές κλάσεις για κοινές λειτουργίες παρουσιάσεων. Αυτές οι βοηθοί περιτυλίγουν συχνά χρησιμοποιούμενες ροές εργασίας του μοντέλου αντικειμένων σε εστιασμένες μεθόδους, ώστε να μπορείτε να μετατρέπετε ή να συγχωνεύετε αρχεία, να επεξεργάζεστε στοιχεία παρουσίασης, να συλλέγετε σχήματα και να αφαιρείτε αχρησιμοποίητο περιεχόμενο με λιγότερο κώδικα.
Οι βοηθοί χαμηλού κώδικα είναι πιο χρήσιμοι όταν η λειτουργία εφαρμόζει σε ολόκληρο το αρχείο ή την παρουσίαση και η προεπιλεγμένη ροή εργασίας ταιριάζει με τις απαιτήσεις σας. Χρησιμοποιήστε το πλήρες Aspose.Slides object model όταν χρειάζεστε λεπτομερή έλεγχο των μεμονωμένων διαφανειών, master, διατάξεων, σχημάτων, ρυθμίσεων εξαγωγής ή σχέσεων μεταξύ στοιχείων παρουσίασης.
Ο παρακάτω πίνακας συνοψίζει τους διαθέσιμους βοηθούς:
| Βοηθός | Χρήση |
|---|---|
| Convert | Μετατροπή μιας παρουσίασης σε άλλη μορφή με απλή κλήση αρχείου‑σε‑αρχείο. |
| Merger | Συνένωση πλήρων αρχείων παρουσίασης της ίδιας μορφής. |
| ForEach_ | Εκτέλεση callback για κάθε διαφάνεια, σχήμα, παράγραφο ή τμήμα κειμένου. |
| Collect | Ανάκτηση σχημάτων από ολόκληρη την παρουσίαση για επαναλαμβανόμενη επεξεργασία ή ανάλυση. |
| Compress | Αφαίρεση αχρησιμοποίητων master και διατάξεων και μείωση ενσωματωμένων δεδομένων γραμματοσειρών. |
Μετατροπή Παρουσίασης
Χρησιμοποιήστε το Convert::autoByExtension όταν η κατάληξη του αρχείου εξόδου είναι επαρκής για την επιλογή της μορφής εξαγωγής. Η μέθοδος ανοίγει την πηγή παρουσίασης, καθορίζει τη ζητούμενη μορφή από τη διαδρομή εξόδου και γράφει το αποτέλεσμα.
use aspose\slides\Convert;
Convert::autoByExtension("input.pptx", "output.pdf");
Η κλάση Convert παρέχει επίσης ειδικές μεθόδους για έξοδο PDF, SVG, JPEG, PNG και TIFF. Χρησιμοποιήστε το πλήρες μοντέλο αντικειμένων όταν χρειάζεται να εξετάσετε ή να τροποποιήσετε την παρουσίαση πριν από την εξαγωγή ή να ρυθμίσετε μια επιλογή εξαγωγής που δεν εκτίθεται από τον επιλεγμένο βοηθό. Δείτε το άρθρο Convert Presentation για ροές εργασίας και επιλογές συγκεκριμένων μορφών.
Συνένωση Παρουσιάσεων
Χρησιμοποιήστε το Merger::process για να συνδυάσετε πλήρη αρχεία παρουσίασης με μία κλήση. Οι εισερχόμενες παρουσιάσεις πρέπει να έχουν την ίδια μορφή αρχείου.
use aspose\slides\Merger;
$inputFiles = ["part-1.pptx", "part-2.pptx"];
Merger::process($inputFiles, "merged.pptx");
Ο βοηθός είναι κατάλληλος όταν όλες οι διαφάνειες πρέπει να προσαρτηθούν σε ένα αποτέλεσμα χωρίς να χρειάζεται η ατομική επιλογή ή αντιστοίχηση τους. Χρησιμοποιήστε το πλήρες μοντέλο αντικειμένων όταν χρειάζεται να συγχωνεύσετε επιλεγμένες διαφάνειες, να εφαρμόσετε προορισμό master ή διάταξης, να διατηρήσετε ενότητες ρητά ή να εναρμονίσετε διαφορετικά μεγέθη διαφάνειας. Δείτε το άρθρο Merge Presentations για αυτές τις περιπτώσεις.
Επανάληψη Στοιχείων Παρουσίασης
Η κλάση ForEach_ καλεί ένα callback για κάθε ζητούμενο τύπο στοιχείου παρουσίασης. Αποφεύγει τις εμφωλευμένες βρόχους συλλογής και είναι βολική για ολική επιθεώρηση ή αλλαγές μορφοποίησης.
Το παρακάτω παράδειγμα χρησιμοποιεί ForEach_::slide, ForEach_::shape, ForEach_::paragraph και ForEach_::portion για να ελέγξουν τα αντίστοιχα στοιχεία:
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();
}
Από προεπιλογή, η διαδρομή σχήματος και κειμένου σε όλη την παρουσίαση περιλαμβάνει κανονικές, master και διατάξεις διαφάνειες. Οι υπερφορτώσεις με παράμετρο includeNotes μπορούν επίσης να επεξεργαστούν διαφάνειες σημειώσεων. Χρησιμοποιήστε απλούς βρόχους συλλογής όταν η σειρά διαδρομής, η πρώιμη έξοδος, το φιλτράρισμα πριν την κλήση του callback ή ο λεπτομερής έλεγχος γονέα‑παιδιού είναι σημαντικά.
Συλλογή Σχημάτων
Χρησιμοποιήστε το Collect::shapes όταν χρειάζεστε μια συλλογή όλων των σχημάτων σε μια παρουσίαση αντί για callback για κάθε σχήμα. Αυτό είναι χρήσιμο όταν το ίδιο σύνολο θα φιλτραριστεί, θα μετρηθεί ή θα επεξεργαστεί περισσότερες φορές.
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();
}
Χρησιμοποιήστε το ForEach_::shape αντ' αυτού όταν κάθε σχήμα μπορεί να επεξεργαστεί αμέσως και δεν χρειάζεται να διατηρηθεί το συλλεγμένο αποτέλεσμα.
Συμπίεση Περιεχομένου Παρουσίασης
Η κλάση Compress μπορεί να αφαιρέσει αχρησιμοποίητα δομικά στοιχεία και να μειώσει τα ενσωματωμένα δεδομένα γραμματοσειρών:
- Compress::removeUnusedLayoutSlides αφαιρεί διατάξεις που δεν αναφέρονται από καμία κανονική διαφάνεια.
- Compress::removeUnusedMasterSlides αφαιρεί master που δεν χρησιμοποιούνται πλέον.
- Compress::compressEmbeddedFonts αφαιρεί αχρησιμοποίητους χαρακτήρες από ενσωματωμένες γραμματοσειρές.
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();
}
Αφαιρέστε πρώτα τις αχρησιμοποίητες διατάξεις πριν τα αχρησιμοποίητα master, ώστε ένα master που γίνει αδέσμευτο μετά τον καθαρισμό των διατάξεων να μπορεί επίσης να αφαιρεθεί. Αποθηκεύστε την βελτιστοποιημένη παρουσίαση σε νέο αρχείο αν μπορεί να χρειαστείτε αργότερα τα αρχικά master, διατάξεις ή πλήρη ενσωματωμένα δεδομένα γραμματοσειρών. Για περισσότερα, δείτε το Slide Master και το Embedded Font.
Συχνές Ερωτήσεις
Πότε πρέπει να χρησιμοποιήσω το API χαμηλού κώδικα αντί του πλήρους μοντέλου αντικειμένων;
Χρησιμοποιήστε τους βοηθούς χαμηλού κώδικα όταν μια τυπική λειτουργία εφαρμόζεται σε πλήρες αρχείο ή παρουσίαση και δεν απαιτεί λεπτομερή έλεγχο των μεμονωμένων στοιχείων. Χρησιμοποιήστε το πλήρες μοντέλο αντικειμένων όταν χρειάζεται να επιλέξετε συγκεκριμένες διαφάνειες, να ελέγξετε σχέσεις master‑layout, να επεξεργαστείτε ενδιάμεση κατάσταση ή να ρυθμίσετε συμπεριφορά που ο βοηθός δεν εκθέτει.
Μπορεί ο Merger να συνδυάσει παρουσιάσεις σε διαφορετικές μορφές αρχείου;
Όχι. Το Merger::process απαιτεί εισερχόμενες παρουσιάσεις στην ίδια μορφή. Μετατρέψτε πρώτα τα αρχεία εισόδου σε κοινή μορφή, για παράδειγμα με το Convert::autoByExtension, και μετά συγχωνεύστε τα μετατραπέντα αρχεία.
**Το ForEach_ επεξεργάζεται master, layout και notes διαφάνειες;**
Το ForEach_::slide επαναλαμβάνει τις κανονικές διαφάνειες παρουσίασης. Οι λειτουργίες ForEach_::shape, ForEach_::paragraph και ForEach_::portion σε ολόκληρη την παρουσίαση περιλαμβάνουν από προεπιλογή κανονικές, master και layout διαφάνειες. Χρησιμοποιήστε τις υπερφορτώσεις τους με includeNotes ορισμένο σε true για να συμπεριλάβετε και τις notes διαφάνειες.
**Ποια είναι η διαφορά μεταξύ ForEach_::shape και Collect::shapes;**
Χρησιμοποιήστε το ForEach_::shape για να επεξεργαστείτε κάθε σχήμα αμέσως μέσω ενός callback. Χρησιμοποιήστε το Collect::shapes όταν χρειάζεστε ένα επαναχρησιμοποιήσιμο αποτέλεσμα που μπορεί να διατηρηθεί, φιλτραριστεί, μετρηθεί ή διασχιστεί πολλές φορές.
Η Compress κάνει πάντα το αρχείο παρουσίασης μικρότερο;
Δεν είναι απαραίτητα. Το αποτέλεσμα εξαρτάται από το εάν η παρουσίαση περιέχει αχρησιμοποίητες διατάξεις, αχρησιμοποίητα master ή ενσωματωμένες γραμματοσειρές με αχρησιμοποίητους χαρακτήρες. Εάν δεν υπάρχουν, οι αντίστοιχες λειτουργίες Compress μπορεί να μην μειώσουν το μέγεθος του αρχείου.
**Αποθηκεύονται αυτόματα οι αλλαγές που κάνει το ForEach_ ή το Compress;**
Όχι. Οι βοηθοί αυτοί λειτουργούν στο φορτωμένο αντικείμενο Presentation στη μνήμη. Μετά την αλλαγή στοιχείων σε ένα callback του ForEach_ ή την εκτέλεση του Compress, καλέστε το Presentation::save για να γράψετε το αποτέλεσμα.