Αποθήκευση παρουσιάσεων σε JavaScript
Επισκόπηση
Αφού δημιουργήσετε μια παρουσίαση ή ανοίξετε μια υπάρχουσα, χρησιμοποιήστε τη μέθοδο Presentation.save για να γράψετε το αποτέλεσμα. Το Aspose.Slides for Node.js via Java μπορεί να αποθηκεύσει μια παρουσίαση σε αρχείο ή ροή σε μορφές PowerPoint, OpenDocument, PDF και άλλες. Οι παρακάτω ενότητες καλύπτουν τις τυπικές λειτουργίες αποθήκευσης και τις επιλογές που διατίθενται για έξοδο PPTX.
Αποθήκευση παρουσιάσεων σε αρχεία
Για να αποθηκεύσετε μια παρουσίαση σε αρχείο, περάστε τη διαδρομή εξόδου και μια τιμή SaveFormat στη μέθοδο Presentation.save. Η τιμή μορφής καθορίζει τον τύπο αρχείου που δημιουργεί το Aspose.Slides.
Το παρακάτω παράδειγμα δημιουργεί μια παρουσίαση και τη αποθηκεύει ως αρχείο PPTX:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
// Προσθέστε ή τροποποιήστε το περιεχόμενο της παρουσίασης εδώ.
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Αποθήκευση παρουσιάσεων στην αρχική μορφή τους
Για παραδείγματα ανίχνευσης αρχείου και ροής, τη συμπεριφορά των νέων παρουσιάσεων και τη διάκριση μεταξύ μορφής προέλευσης και εξόδου, δείτε το Determine the Original Presentation Format.
Σε εφαρμογή επεξεργασίας παρτίδας, η μορφή εισόδου μπορεί να μην είναι γνωστή εκ των προτέρων. Μετά τη φόρτωση ενός αρχείου, διαβάστε την αρχική μορφή του από τη μέθοδο Presentation.getSourceFormat. Περνάτε την προκύπτουσα τιμή SourceFormat στη SlideUtil.toSaveFormat για να λάβετε την αντίστοιχη τιμή SaveFormat, και στη συνέχεια χρησιμοποιείτε το Presentation.save για να γράψετε την τροποποιημένη παρουσίαση.
Το παρακάτω πλήρες παράδειγμα επεξεργάζεται κάθε αρχείο σε έναν φάκελο εισόδου, ενημερώνει τον τίτλο του και το αποθηκεύει σε φάκελο εξόδου στη μορφή από την οποία φορτώθηκε:
const aspose = { slides: require("aspose.slides.via.java") };
const fs = require("fs");
const path = require("path");
const inputDirectory = "Input";
const outputDirectory = "Output";
if (!fs.existsSync(inputDirectory)) {
console.error("The input directory does not exist.");
} else {
fs.mkdirSync(outputDirectory, { recursive: true });
const inputFiles = fs.readdirSync(inputDirectory, { withFileTypes: true })
.filter((entry) => entry.isFile());
for (const inputFile of inputFiles) {
const inputPath = path.join(inputDirectory, inputFile.name);
try {
const presentation = new aspose.slides.Presentation(inputPath);
try {
const saveFormat = aspose.slides.SlideUtil.toSaveFormat(presentation.getSourceFormat());
presentation.getDocumentProperties().setTitle("Processed by the batch application");
const outputPath = path.join(outputDirectory, inputFile.name);
presentation.save(outputPath, saveFormat);
} finally {
presentation.dispose();
}
} catch (error) {
console.error(`Cannot process '${inputPath}': ${error.message}`);
}
}
}
SlideUtil.toSaveFormat αντιστοιχεί PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP και PowerPoint XML στις αντίστοιχες μορφές αποθήκευσης παρουσίασης. Αντιστοιχεί μόνο στις μορφές προέλευσης παρουσίασης· δεν προορίζεται για επιλογή μορφών εξαγωγής όπως PDF, HTML, TIFF ή εικόνες. Η περαιτέρω τιμή SourceFormat που δεν υποστηρίζεται ή είναι μη έγκυρη προκαλεί σφάλμα.
Τα παλαιά αρχεία PPT, PPS και POT χρησιμοποιούν το ίδιο δυαδικό δοχείο. Όταν μια τέτοια παρουσίαση φορτώνεται από ροή χωρίς επέκταση αρχείου, ένα αρχείο PPS ή POT μπορεί επομένως να ταυτιστεί ως PPT. Εάν απαιτείται η διατήρηση αυτών των παλαιών υποτύπων, διατηρήστε το αρχικό όνομα αρχείου ή τα μεταδεδομένα μορφής ξεχωριστά και χρησιμοποιήστε τα κατά την επιλογή του ονόματος και της μορφής εξόδου.
Αποθήκευση παρουσιάσεων σε ροές
Για να γράψετε μια παρουσίαση χωρίς να βασιστείτε σε τελική διαδρομή αρχείου, περάστε μια ροή εγγραφής και μια τιμή SaveFormat στη μέθοδο Presentation.save. Αυτή η προσέγγιση είναι χρήσιμη όταν η έξοδος πρέπει να επιστραφεί από υπηρεσία web, να αποθηκευτεί σε βάση δεδομένων ή να υποβληθεί σε επεξεργασία στη μνήμη.
Το παρακάτω παράδειγμα αποθηκεύει μια νέα παρουσίαση σε ροή αρχείου:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const outputStream = java.newInstanceSync("java.io.FileOutputStream", "output.pptx");
try {
presentation.save(outputStream, aspose.slides.SaveFormat.Pptx);
} finally {
outputStream.close();
}
} finally {
presentation.dispose();
}
Αποθήκευση παρουσιάσεων με προεπιλεγμένο τύπο προβολής
Μπορείτε να καθορίσετε την προβολή στην οποία το PowerPoint ανοίγει αρχικά μια αποθηκευμένη παρουσίαση. Χρησιμοποιήστε τη μέθοδο ViewProperties.setLastView με μια τιμή ViewType πριν την αποθήκευση.
Το παρακάτω παράδειγμα ρυθμίζει την προβολή Slide Master ως αρχική προβολή:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideMasterView);
presentation.save("slide-master-view.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Αποθήκευση παρουσιάσεων σε αυστηρή μορφή Office Open XML
Για να δημιουργήσετε ένα αρχείο PPTX που συμμορφώνεται με το αυστηρό προφίλ του Office Open XML, δημιουργήστε ένα αντικείμενο PptxOptions και χρησιμοποιήστε τη μέθοδο setConformance με την τιμή Conformance.Iso29500_2008_Strict. Στη συνέχεια περάστε τις επιλογές στη μέθοδο Presentation.save.
const aspose = { slides: require("aspose.slides.via.java") };
const options = new aspose.slides.PptxOptions();
options.setConformance(aspose.slides.Conformance.Iso29500_2008_Strict);
const presentation = new aspose.slides.Presentation();
try {
presentation.save("strict-office-open-xml.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Αποθήκευση παρουσιάσεων σε μορφή Office Open XML σε λειτουργία Zip64
Ένα τυπικό αρχείο ZIP περιορίζει το συμπιεσμένο και ασυμπίεστο μέγεθος κάθε καταχώρησης, το συνολικό μέγεθος του αρχείου και τον αριθμό των καταχωρήσεων. Επειδή ένα αρχείο PPTX είναι αρχείο ZIP, μια πολύ μεγάλη παρουσίαση μπορεί να υπερβεί αυτά τα όρια. Οι επεκτάσεις ZIP64 αυξάνουν τα εφαρμόσιμα όρια μεγέθους και αριθμού καταχωρήσεων.
Χρησιμοποιήστε τη μέθοδο PptxOptions.setZip64Mode για να ελέγξετε εάν το Aspose.Slides γράφει επεκτάσεις ZIP64:
- IfNecessary χρησιμοποιεί ZIP64 μόνο όταν η παρουσίαση υπερβαίνει τα τυπικά όρια ZIP. Αυτό είναι η προεπιλεγμένη λειτουργία.
- Never απενεργοποιεί τις επεκτάσεις ZIP64.
- Always πάντα γράφει επεκτάσεις ZIP64.
Το παρακάτω παράδειγμα ενεργοποιεί πάντα τις επεκτάσεις ZIP64 για την παρουσίαση εξόδου:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setZip64Mode(aspose.slides.Zip64Mode.Always);
presentation.save("output-zip64.pptx", aspose.slides.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 παρέχει τη δυνατότερη συμπίεση και απαιτεί περισσότερο χρόνο επεξεργασίας.
Το παρακάτω παράδειγμα αποθηκεύει μια παρουσίαση χωρίς συμπίεση:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setCompressionLevel(aspose.slides.CompressionLevel.None);
presentation.save("output-no-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Το παράδειγμα παρακάτω χρησιμοποιεί το μέγιστο επίπεδο συμπίεσης:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setCompressionLevel(aspose.slides.CompressionLevel.Level9);
presentation.save("output-maximum-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Αποθήκευση παρουσιάσεων χωρίς ανανέωση της μικρογραφίας
Όταν μια παρουσίαση αποθηκεύεται ως PPTX, η μέθοδος PptxOptions.setRefreshThumbnail ελέγχει τη μικρογραφία του εγγράφου:
trueαναγεννεί τη μικρογραφία κατά τη λειτουργία αποθήκευσης. Αυτή είναι η προεπιλεγμένη τιμή.falseδιατηρεί την υπάρχουσα μικρογραφία. Εάν η παρουσίαση δεν έχει μικρογραφία, το Aspose.Slides δεν δημιουργεί καμία.
Το παρακάτω παράδειγμα αποθηκεύει μια παρουσίαση χωρίς να ανανεώσει τη μικρογραφία της:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setRefreshThumbnail(false);
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Note
Η απενεργοποίηση της ανανέωσης της μικρογραφίας μπορεί να μειώσει το χρόνο που απαιτείται για την αποθήκευση ενός αρχείου PPTX.Αναφορές προόδου αποθήκευσης σε ποσοστό
Για να παρακολουθείτε μια λειτουργία αποθήκευσης, υλοποιήστε τη διεπαφή IProgressCallback με διαμεσολαβητή Java και περάστε την υλοποίηση στη μέθοδο SaveOptions.setProgressCallback. Το Aspose.Slides τότε καλεί τη μέθοδο IProgressCallback.reporting με τιμές προόδου κατά την εξαγωγή.
Το παρακάτω παράδειγμα αναφέρει την πρόοδο εξαγωγής PDF στην κονσόλα:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const exportProgressHandler = java.newProxy("com.aspose.slides.IProgressCallback", {
reporting: function(progressValue) {
const progress = Math.floor(progressValue);
console.log(`${progress}% of the file has been converted.`);
}
});
const options = new aspose.slides.PdfOptions();
options.setProgressCallback(exportProgressHandler);
const presentation = new aspose.slides.Presentation("input.pptx");
try {
presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf, options);
} finally {
presentation.dispose();
}
Note
Η Aspose παρέχει ένα δωρεάν PowerPoint Splitter που δημιουργήθηκε με το API Aspose.Slides. Αποθηκεύει επιλεγμένες διαφάνειες από μια παρουσίαση ως ξεχωριστά αρχεία PPT ή PPTX.Συχνές ερωτήσεις
Υποστηρίζει το Aspose.Slides αποθήκευση σε βήματα ή «γρήγορη αποθήκευση»;
Όχι. Κάθε λειτουργία αποθήκευσης γράφει ένα πλήρες αρχείο εξόδου αντί να ενημερώνει μόνο τα τροποποιημένα μέρη.
Μπορούν πολλαπλές διεργασίες να αποθηκεύσουν το ίδιο αντικείμενο Presentation;
Όχι. Ένα αντικείμενο Presentation δεν είναι thread-safe. Πρόσβαση και αποθήκευση κάθε αντικειμένου πρέπει να γίνεται από μία μόνο διεργασία τη φορά.
Τι συμβαίνει με τους υπερσυνδέσμους και τα εξωτερικά συνδεδεμένα αρχεία όταν αποθηκεύω μια παρουσίαση;
Τα Hyperlinks παραμένουν στην παρουσίαση. Το Aspose.Slides δεν αντιγράφει εξωτερικά συνδεδεμένα αρχεία, επομένως η αποθηκευμένη παρουσίαση πρέπει ακόμη να μπορεί να προσπελάσει τις τοποθεσίες τους.
Μπορώ να αποθηκεύσω μεταδεδομένα εγγράφου όπως συγγραφέας, τίτλος, εταιρεία και ημερομηνία δημιουργίας;
Ναι. Ορίστε τις κατάλληλες document properties πριν την αποθήκευση και το Aspose.Slides θα τις γράψει στο αρχείο εξόδου.