Αποθήκευση Παρουσιάσεων σε PHP
Επισκόπηση
Αφού δημιουργήσετε μια παρουσίαση ή ανοίξετε ένα υπάρχον, χρησιμοποιήστε τη μέθοδο Presentation::save για να γράψετε το αποτέλεσμα. Το Aspose.Slides for PHP via Java μπορεί να αποθηκεύσει μια παρουσίαση σε αρχείο ή ροή σε μορφές PowerPoint, OpenDocument, PDF και άλλες μορφές. Οι παρακάτω ενότητες καλύπτουν τις τυπικές λειτουργίες αποθήκευσης και τις διαθέσιμες επιλογές για έξοδο PPTX.
Αποθήκευση παρουσιάσεων σε αρχεία
Για να αποθηκεύσετε μια παρουσίαση σε αρχείο, περάστε τη διαδρομή εξόδου και μια τιμή SaveFormat στη μέθοδο Presentation::save. Η τιμή μορφής καθορίζει τον τύπο του αρχείου που δημιουργεί το Aspose.Slides.
Το παρακάτω παράδειγμα δημιουργεί μια παρουσίαση και την αποθηκεύει ως αρχείο PPTX:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
// Προσθήκη ή τροποποίηση περιεχομένου παρουσίασης εδώ.
$presentation->save("Output.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Αποθήκευση παρουσιάσεων στην αρχική τους μορφή
Για παραδείγματα ανίχνευσης αρχείου και ροής, τη συμπεριφορά των νεοδημιουργημένων παρουσιάσεων και τη διάκριση μεταξύ μορφών προέλευσης και εξόδου, δείτε Καθορίστε την αρχική μορφή παρουσίασης.
Σε εφαρμογή μαζικής επεξεργασίας, η μορφή εισόδου μπορεί να μην είναι γνωστή εκ των προτέρων. Μετά τη φόρτωση ενός αρχείου, διαβάστε την αρχική του μορφή από τη μέθοδο Presentation::getSourceFormat. Περνάτε την προκύπτουσα τιμή SourceFormat στη μέθοδο SlideUtil::toSaveFormat για να λάβετε την αντίστοιχη τιμή SaveFormat, και στη συνέχεια χρησιμοποιείτε το Presentation::save για να γράψετε την τροποποιημένη παρουσίαση.
Το παρακάτω πλήρες παράδειγμα επεξεργάζεται κάθε αρχείο σε έναν φάκελο εισόδου, ενημερώνει τον τίτλο του και το αποθηκεύει σε φάκελο εξόδου στη μορφή από την οποία φορτώθηκε:
use aspose\slides\Presentation;
use aspose\slides\SlideUtil;
$inputDirectory = __DIR__ . DIRECTORY_SEPARATOR . "Input";
$outputDirectory = __DIR__ . DIRECTORY_SEPARATOR . "Output";
if (!is_dir($outputDirectory) && !mkdir($outputDirectory, 0777, true)) {
echo("Cannot create the output directory." . PHP_EOL);
}
$inputFiles = is_dir($inputDirectory) ? scandir($inputDirectory) : false;
if ($inputFiles !== false && is_dir($outputDirectory)) {
foreach ($inputFiles as $fileName) {
$inputPath = $inputDirectory . DIRECTORY_SEPARATOR . $fileName;
if (!is_file($inputPath)) {
continue;
}
$presentation = null;
$presentationLoaded = false;
try {
$presentation = new Presentation($inputPath);
$presentationLoaded = true;
$saveFormat = SlideUtil::toSaveFormat($presentation->getSourceFormat());
$presentation->getDocumentProperties()->setTitle("Processed by the batch application");
$outputPath = $outputDirectory . DIRECTORY_SEPARATOR . $fileName;
$presentation->save($outputPath, $saveFormat);
} catch (\Throwable $exception) {
echo("Cannot process '" . $inputPath . "': " . $exception->getMessage() . PHP_EOL);
} finally {
if ($presentationLoaded) {
$presentation->dispose();
}
}
}
}
SlideUtil::toSaveFormat αντιστοιχεί PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP και PowerPoint XML στις αντίστοιχες μορφές αποθήκευσης παρουσίασης. Αντιστοιχεί μόνο μορφές προέλευσης παρουσίασης· δεν προορίζεται για επιλογή μορφών εξαγωγής όπως PDF, HTML, TIFF ή εικόνες. Η παράδοση μιας μη υποστηριζόμενης ή μη έγκυρης τιμής SourceFormat προκαλεί ένα IllegalArgumentException.
Τα κληρονομημένα αρχεία PPT, PPS και POT χρησιμοποιούν το ίδιο δυαδικό κοντέινερ. Όταν μια τέτοια παρουσίαση φορτώνεται από ροή χωρίς κατάληξη αρχείου, ένα αρχείο PPS ή POT μπορεί επομένως να ταυτοποιηθεί ως PPT. Εάν απαιτείται διατήρηση αυτών των κληρονομημένων υποτύπων, διατηρήστε το αρχικό όνομα αρχείου ή τα μεταδεδομένα μορφής ξεχωριστά και χρησιμοποιήστε τα όταν επιλέγετε το όνομα αρχείου και τη μορφή εξόδου.
Αποθήκευση παρουσιάσεων σε ροές
Για να γράψετε μια παρουσίαση χωρίς να βασίζεστε σε τελική διαδρομή αρχείου, περάστε μια εγγράψιμη ροή και μια τιμή SaveFormat στη μέθοδο Presentation::save. Αυτή η προσέγγιση είναι χρήσιμη όταν η έξοδος πρέπει να επιστραφεί από μια υπηρεσία web, να αποθηκευτεί σε βάση δεδομένων ή να υποβληθεί σε επεξεργασία στη μνήμη.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
$outputStream = new Java("java.io.FileOutputStream", "Output.pptx");
try {
$presentation->save($outputStream, SaveFormat::Pptx);
} finally {
$outputStream->close();
}
} finally {
$presentation->dispose();
}
Αποθήκευση παρουσιάσεων με προκαθορισμένο τύπο προβολής
Μπορείτε να καθορίσετε την προβολή στην οποία το PowerPoint ανοίγει αρχικά μια αποθηκευμένη παρουσίαση. Χρησιμοποιήστε τη μέθοδο ViewProperties::setLastView με μια τιμή ViewType πριν από την αποθήκευση.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ViewType;
$presentation = new Presentation();
try {
$presentation->getViewProperties()->setLastView(ViewType::SlideMasterView);
$presentation->save("SlideMasterView.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Αποθήκευση παρουσιάσεων σε αυστηρή μορφή Office Open XML
Για να δημιουργήσετε ένα αρχείο PPTX που συμμορφώνεται με το προφίλ Strict του Office Open XML, δημιουργήστε μια παρουσίαση PptxOptions και χρησιμοποιήστε τη μέθοδό της PptxOptions::setConformance με τιμή Conformance::Iso29500_2008_Strict. Στη συνέχεια περάστε τις επιλογές στη μέθοδο Presentation::save.
use aspose\slides\Conformance;
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$options = new PptxOptions();
$options->setConformance(Conformance::Iso29500_2008_Strict);
$presentation = new Presentation();
try {
$presentation->save("StrictOfficeOpenXml.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
Αποθήκευση παρουσιάσεων σε μορφή Office Open XML σε λειτουργία Zip64
Ένα τυπικό αρχείο ZIP περιορίζει το συμπιεσμένο και ασυμπιεσμένο μέγεθος κάθε εγγραφής, το συνολικό μέγεθος του αρχείου και τον αριθμό των εγγραφών. Επειδή ένα αρχείο PPTX είναι αρχείο ZIP, μια πολύ μεγάλη παρουσίαση μπορεί να υπερβεί αυτά τα όρια. Οι επεκτάσεις ZIP64 αυξάνουν τα όρια μεγέθους και αριθμού εγγραφών.
- Το IfNecessary χρησιμοποιεί ZIP64 μόνο όταν η παρουσίαση υπερβαίνει τα τυπικά όρια ZIP. Αυτή είναι η προεπιλεγμένη λειτουργία.
- Το Never απενεργοποιεί τις επεκτάσεις ZIP64.
- Το Always πάντα γράφει επεκτάσεις ZIP64.
Το παρακάτω παράδειγμα ενεργοποιεί πάντα τις επεκτάσεις ZIP64 για την έξοδο της παρουσίασης:
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\Zip64Mode;
$presentation = new Presentation("Sample.pptx");
try {
$options = new PptxOptions();
$options->setZip64Mode(Zip64Mode::Always);
$presentation->save("OutputZip64.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
Warning
Εάν χρησιμοποιηθεί το Zip64Mode::Never και η παρουσίαση δεν μπορεί να χωρέσει στα τυπικά όρια ZIP, η λειτουργία αποθήκευσης ρίχνει μια PptxException.Αποθήκευση παρουσιάσεων σε μορφή Office Open XML με επίπεδα συμπίεσης
Για έξοδο PPTX, μπορείτε να ισορροπήσετε την ταχύτητα αποθήκευσης με το μέγεθος του αρχείου χρησιμοποιώντας τη μέθοδο PptxOptions::setCompressionLevel. Η κλάση CompressionLevel παρέχει τις ακόλουθες τιμές:
- Το None αποθηκεύει δεδομένα χωρίς συμπίεση.
- Το Level1 προσφέρει τη γρηγορότερη συμπίεση και το μεγαλύτερο συμπιεσμένο αποτέλεσμα.
- Τα Level2 έως Level5 προτιμούν σταδιακά μικρότερο αρχείο αντί για ταχύτητα αποθήκευσης.
- Το Level6 ισορροπεί την ταχύτητα αποθήκευσης και το μέγεθος αρχείου. Αυτό είναι το προεπιλεγμένο επίπεδο.
- Τα Level7 και Level8 προτιμούν ακόμη περισσότερο μικρότερο αρχείο αντί για ταχύτητα.
- Το Level9 παρέχει τη μεγαλύτερη συμπίεση και απαιτεί το μεγαλύτερο χρόνο επεξεργασίας.
Το παρακάτω παράδειγμα αποθηκεύει μια παρουσίαση χωρίς συμπίεση:
use aspose\slides\CompressionLevel;
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("Sample.pptx");
try {
$options = new PptxOptions();
$options->setCompressionLevel(CompressionLevel::None);
$presentation->save("OutputNoCompression.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
Το παρακάτω παράδειγμα χρησιμοποιεί το μέγιστο επίπεδο συμπίεσης:
use aspose\slides\CompressionLevel;
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("Sample.pptx");
try {
$options = new PptxOptions();
$options->setCompressionLevel(CompressionLevel::Level9);
$presentation->save("OutputMaximumCompression.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
Αποθήκευση παρουσιάσεων χωρίς ανανέωση της μικρογραφίας
Όταν μια παρουσίαση αποθηκεύεται ως PPTX, η μέθοδος PptxOptions::setRefreshThumbnail ελέγχει τη μικρογραφία του εγγράφου:
trueδημιουργεί ξανά τη μικρογραφία κατά την αποθήκευση. Αυτή είναι η προεπιλεγμένη τιμή.falseδιατηρεί την υπάρχουσα μικρογραφία. Αν η παρουσίαση δεν έχει μικρογραφία, το Aspose.Slides δεν δημιουργεί κάποια.
Το παρακάτω παράδειγμα αποθηκεύει μια παρουσίαση χωρίς να ανανεώσει τη μικρογραφία της:
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("Sample.pptx");
try {
$options = new PptxOptions();
$options->setRefreshThumbnail(false);
$presentation->save("Output.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
Note
Η απενεργοποίηση της ανανέωσης της μικρογραφίας μπορεί να μειώσει το χρόνο που απαιτείται για την αποθήκευση ενός αρχείου PPTX.Αποθήκευση ενημερώσεων προόδου σε ποσοστό
Για να παρακολουθείτε μια λειτουργία αποθήκευσης, παρέχετε μια διαμεσολαβητική κλάση Java που υλοποιεί το interface IProgressCallback και περάστε την στον μέθοδο SaveOptions::setProgressCallback. Το Aspose.Slides στη συνέχεια καλεί τη μέθοδο IProgressCallback::reporting με τιμές προόδου κατά την εξαγωγή.
Το παρακάτω παράδειγμα αναφέρει την πρόοδο εξαγωγής PDF στην κονσόλα:
use aspose\slides\PdfOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
class ExportProgressHandler {
function reporting($progressValue) {
$progress = java("java.lang.Double")->valueOf($progressValue)->intValue();
echo($progress . "% of the file has been converted." . PHP_EOL);
}
}
$progressHandler = java_closure(new ExportProgressHandler(), null, java("com.aspose.slides.IProgressCallback"));
$options = new PdfOptions();
$options->setProgressCallback($progressHandler);
$presentation = new Presentation("Sample.pptx");
try {
$presentation->save("Output.pdf", SaveFormat::Pdf, $options);
} finally {
$presentation->dispose();
}
Note
Η Aspose παρέχει ένα δωρεάν PowerPoint Splitter χτισμένο με το API Aspose.Slides. Αποθηκεύει επιλεγμένες διαφάνειες από μια παρουσίαση ως ξεχωριστά αρχεία PPT ή PPTX.Συχνές ερωτήσεις
Υποστηρίζει το Aspose.Slides αποθήκευση σε τμήματα ή «γρήγορη αποθήκευση»;
Όχι. Κάθε λειτουργία αποθήκευσης γράφει ένα πλήρες αρχείο εξόδου αντί να ενημερώνει μόνο τα τροποποιημένα τμήματα.
Μπορούν πολλαπλά νήματα να αποθηκεύσουν την ίδια παρουσίαση (Presentation) ταυτόχρονα;
Όχι. Μια παρουσίαση Presentation δεν είναι ασφαλής προς νήματα (is not thread-safe). Πρόσβαση και αποθήκευση κάθε παρουσίας πρέπει να γίνεται από ένα νήμα τη φορά.
Τι συμβαίνει με τους υπερσυνδέσμους και τα εξωτερικά συνδεδεμένα αρχεία όταν αποθηκεύω μια παρουσίαση;
Οι Hyperlinks παραμένουν στην παρουσίαση. Το Aspose.Slides δεν αντιγράφει τα εξωτερικά συνδεδεμένα αρχεία, έτσι η αποθηκευμένη παρουσίαση πρέπει ακόμα να μπορεί να προσπελάσει τις τοποθεσίες τους.
Μπορώ να αποθηκεύσω μεταδεδομένα εγγράφου όπως συγγραφέα, τίτλο, εταιρεία και ημερομηνία δημιουργίας;
Ναι. Ορίστε τις κατάλληλες ιδιότητες εγγράφου πριν από την αποθήκευση, και το Aspose.Slides τις γράφει στο αρχείο εξόδου.