Ανάκτηση και Ενημέρωση Πληροφοριών Παρουσίασης σε Android
Επισκόπηση
Το Aspose.Slides μπορεί να εντοπίσει τη μορφή μιας παρουσίασης και να διαβάσει τα μεταδεδομένα του εγγράφου χωρίς να δημιουργήσει πλήρες μοντέλο αντικειμένων παρουσίασης. Αυτό είναι χρήσιμο όταν πρέπει να ταξινομήσετε αρχεία, να δημιουργήσετε ένα απόθεμα ή να ελέγξετε ιδιότητες πριν αποφασίσετε αν θα φορτώσετε και θα επεξεργαστείτε το περιεχόμενο της παρουσίασης.
Αυτό το άρθρο δείχνει ελαφριά επιθεώρηση μέσω PresentationFactory και IPresentationInfo, καθώς και στοχευμένες ενημερώσεις μέσω IDocumentProperties.
Έλεγχος Μορφής Παρουσίασης
Εάν έχετε ήδη φορτωμένη παρουσίαση, δείτε Καθορισμός της Αρχικής Μορφής Παρουσίασης για εντοπισμό μετά το φόρτωμα και τους περιορισμούς των παλαιών ροών PPT, PPS και POT.
Χρησιμοποιήστε PresentationFactory.getPresentationInfo για να επιθεωρήσετε ένα αρχείο χωρίς να δημιουργήσετε μια παρουσίαση Presentation αντικείμενο. Η μέθοδος IPresentationInfo.getLoadFormat επιστρέφει τη ανιχνευμένη μορφή, όπως PPTX, PPT ή ODP.
import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadFormat;
import com.aspose.slides.PresentationFactory;
String[] fileNames = { "pres.pptx", "pres.ppt", "pres.odp" };
for (String fileName : fileNames) {
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(fileName);
int loadFormat = presentationInfo.getLoadFormat();
String formatName = "Other (" + loadFormat + ")";
if (loadFormat == LoadFormat.Pptx) {
formatName = "PPTX";
} else if (loadFormat == LoadFormat.Ppt) {
formatName = "PPT";
} else if (loadFormat == LoadFormat.Odp) {
formatName = "ODP";
}
System.out.println(fileName + ": " + formatName);
}
Δημιουργία Ελαφριού Αποθέματος Παρουσίασης
Όταν επεξεργάζεστε πολλά αρχεία παρουσίασης, μπορεί να χρειαστείτε ένα συμπαγές απόθεμα για επικύρωση, ευρετηρίαση ή σύστημα διαχείρισης εγγράφων. Σε αυτό το σενάριο, χρησιμοποιήστε PresentationFactory.getPresentationInfo για να αποκτήσετε ένα αντικείμενο IPresentationInfo και, στη συνέχεια, καλέστε IPresentationInfo.readDocumentProperties για να διαβάσετε τα μεταδεδομένα του εγγράφου. Αυτή η προσέγγιση δεν δημιουργεί μια παρουσίαση Presentation αντικείμενο ούτε απαιτεί την πλήρη διαδρομή του μοντέλου αντικειμένων παρουσίασης.
Οι επεκταμένες ιδιότητες που εκτίθενται από το IDocumentProperties παρέχουν τις ακόλουθες τιμές αποθέματος:
| Μέθοδος | Τιμή αποθέματος |
|---|---|
| getSlides | Συνολικός αριθμός διαφανειών. |
| getHiddenSlides | Αριθμός κρυφών διαφανειών. |
| getNotes | Αριθμός διαφανειών που περιέχουν σημειώσεις. |
| getParagraphs | Συνολικός αριθμός παραγράφων, όταν είναι διαθέσιμο. |
| getWords | Συνολικός αριθμός λέξεων. |
| getMultimediaClips | Συνολικός αριθμός ηχητικών και βίντεο αποσπασμάτων. |
Το παρακάτω παράδειγμα διαβάζει αυτές τις τιμές χωρίς να δημιουργήσει ένα αντικείμενο Presentation και εκτυπώνει ένα συμπαγές απόθεμα. Συνδυάζει επίσης το getHeadingPairs με το getTitlesOfParts για να εμφανίσει ομάδες περιεχομένου όπως γραμματοσειρές, θέματα και τίτλους διαφανειών.
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.IHeadingPair;
import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.LoadFormat;
import com.aspose.slides.PresentationFactory;
import java.nio.file.Paths;
String filePath = "sample.pptx";
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(filePath);
IDocumentProperties documentProperties = presentationInfo.readDocumentProperties();
int loadFormat = presentationInfo.getLoadFormat();
String formatName = "Other (" + loadFormat + ")";
if (loadFormat == LoadFormat.Pptx) {
formatName = "PPTX";
} else if (loadFormat == LoadFormat.Ppt) {
formatName = "PPT";
} else if (loadFormat == LoadFormat.Odp) {
formatName = "ODP";
}
System.out.println("File: " + Paths.get(filePath).getFileName());
System.out.println("Format: " + formatName);
System.out.println("Title: " + documentProperties.getTitle());
System.out.println("Author: " + documentProperties.getAuthor());
System.out.println("Statistics:");
System.out.println(" Slides: " + documentProperties.getSlides());
System.out.println(" Hidden slides: " + documentProperties.getHiddenSlides());
System.out.println(" Slides with notes: " + documentProperties.getNotes());
System.out.println(" Paragraphs: " + documentProperties.getParagraphs());
System.out.println(" Words: " + documentProperties.getWords());
System.out.println(" Multimedia clips: " + documentProperties.getMultimediaClips());
IHeadingPair[] headingPairs = documentProperties.getHeadingPairs();
String[] titlesOfParts = documentProperties.getTitlesOfParts();
headingPairs = headingPairs != null ? headingPairs : new IHeadingPair[0];
titlesOfParts = titlesOfParts != null ? titlesOfParts : new String[0];
int partIndex = 0;
if (headingPairs.length == 0 || titlesOfParts.length == 0) {
System.out.println("Content groups: not available");
} else {
System.out.println("Content groups:");
for (IHeadingPair headingPair : headingPairs) {
System.out.println(" " + headingPair.getName() + " (" + headingPair.getCount() + ")");
for (int partOffset = 0; partOffset < headingPair.getCount() && partIndex < titlesOfParts.length; partOffset++) {
System.out.println(" - " + titlesOfParts[partIndex]);
partIndex++;
}
}
if (partIndex < titlesOfParts.length) {
System.out.println(" Other parts:");
while (partIndex < titlesOfParts.length) {
System.out.println(" - " + titlesOfParts[partIndex]);
partIndex++;
}
}
}
Κάθε IHeadingPair παρέχει ένα όνομα ομάδας και τον αριθμό των στοιχείων σε αυτήν την ομάδα. Η μέθοδος IDocumentProperties.getTitlesOfParts επιστρέφει έναν επίπεδο, διατεταγμένο πίνακα, ώστε να καταναλώσετε τον αριθμό διαδοχικών τίτλων που ορίζονται από κάθε ζεύγος επικεφαλίδας.
Αποθηκευμένα Μεταδεδομένα και Περιορισμοί Μορφής
Οι ιδιότητες αποθέματος που επιστρέφει το IPresentationInfo.readDocumentProperties αντανακλούν τα μεταδεδομένα που είναι διαθέσιμα στο πηγαίο έγγραφο. Το Aspose.Slides δεν φορτώνει και δεν διατρέχει το μοντέλο αντικειμένων παρουσίασης για να επανυπολογίσει αυτές τις τιμές για αυτήν την κλήση. Οι ελλιπείς ιδιότητες αντιπροσωπεύονται από προεπιλεγμένες τιμές, και οι αποθηκευμένες τιμές μπορεί να είναι ξεπερασμένες αν η εφαρμογή που αποθήκευσε τελευταία το αρχείο δεν ενημέρωσε τις ιδιότητες του εγγράφου.
- PPTX: Η μορφή παρέχει επεκταμένες ιδιότητες εγγράφου για μετρήσεις διαφανειών, σημειώσεων, κρυφών διαφανειών, παραγράφων, λέξεων και πολυμέσων, καθώς και ζεύγη επικεφαλίδων και τίτλους τμημάτων. Η διαθεσιμότητα εξαρτάται από τις ιδιότητες που έγραψε ο δημιουργός του εγγράφου.
- PPT: Η δυαδική μορφή μπορεί να αποθηκεύσει αντίστοιχες ιδιότητες περίληψης εγγράφου. Εάν μια ιδιότητα λείπει ή δεν έχει ανανεωθεί από τον δημιουργό, το Aspose.Slides επιστρέφει την αποθηκευμένη ή προεπιλεγμένη τιμή αντί να την υπολογίσει από τις διαφάνειες.
- ODP: Τα μεταδεδομένα OpenDocument παρέχουν γενικές στατιστικές εγγράφου, όπως αριθμό σελίδων, παραγράφων και λέξεων, αλλά αυτές οι τιμές δεν αντιστοιχούν σε κάθε ειδική ιδιότητα του PowerPoint. Μεταδεδομένα κρυφών διαφανειών, σημείων, πολυμέσων, ζευγών επικεφαλίδων και τίτλων τμημάτων μπορεί να μην είναι διαθέσιμα, και οι ιδιότητες αποθέματος μπορεί να επιστρέψουν προεπιλεγμένες τιμές. Μην θεωρείτε μηδενική τιμή ή κενό πίνακα ως αποδεικτικό ότι το αντίστοιχο περιεχόμενο λείπει.
Χρησιμοποιήστε την ελαφριά προσέγγιση μεταδεδομένων για αποθέματα και προκαταρκτικούς ελέγχους. Φορτώστε την παρουσίαση και εξετάστε το ζωντανό μοντέλο αντικειμένων όταν το αποτέλεσμα πρέπει να αντανακλά αλλαγές στη μνήμη ή όταν χρειάζεται να επαληθεύσετε το πραγματικό περιεχόμενο της παρουσίασης.
Ενημέρωση Ιδιοτήτων Παρουσίασης
Οι ιδιότητες που επιστρέφει το IPresentationInfo.readDocumentProperties μπορούν επίσης να τροποποιηθούν χωρίς να δημιουργηθεί μια παρουσίαση Presentation αντικείμενο. Εφαρμόστε τις αλλαγές με το IPresentationInfo.updateDocumentProperties και, στη συνέχεια, γράψτε την δεσμευμένη παρουσίαση με το IPresentationInfo.writeBindedPresentation.
Η παρακάτω εικόνα δείχνει τις αρχικές ιδιότητες εγγράφου της παρουσίασης PowerPoint.

Το παρακάτω παράδειγμα αλλάζει τον τίτλο και την ώρα τελευταίας αποθήκευσης και γράφει το αποτέλεσμα σε νέο αρχείο:
import com.aspose.slides.IDocumentProperties;
import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.PresentationFactory;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
String sourceFile = "sample.pptx";
String outputFile = "sample_with_updated_properties.pptx";
IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo(sourceFile);
IDocumentProperties documentProperties = presentationInfo.readDocumentProperties();
documentProperties.setTitle("Quarterly sales report");
documentProperties.setLastSavedTime(new Date());
presentationInfo.updateDocumentProperties(documentProperties);
try (OutputStream outputStream = new FileOutputStream(outputFile)) {
presentationInfo.writeBindedPresentation(outputStream);
}
Η παρακάτω εικόνα δείχνει τις τροποποιημένες ιδιότητες εγγράφου της παρουσίασης PowerPoint.

Χρήσιμοι Σύνδεσμοι
Για σχετικούς ελέγχους ασφαλείας και ρυθμίσεις προστασίας, δείτε τα παρακάτω άρθρα:
Συχνές Ερωτήσεις
Πώς μπορώ να ελέγξω αν οι γραμματοσειρές είναι ενσωματωμένες και ποιες είναι;
Φορτώστε την παρουσίαση και χρησιμοποιήστε το Presentation.getFontsManager. Καλέστε το IFontsManager.getEmbeddedFonts για να λάβετε τις ενσωματωμένες γραμματοσειρές και το IFontsManager.getFonts για να λάβετε τις γραμματοσειρές που χρησιμοποιεί η παρουσίαση. Συγκρίνετε τα δύο αποτελέσματα για να βρείτε γραμματοσειρές που απαιτούνται για το rendering αλλά δεν είναι ενσωματωμένες.
Πώς μπορώ γρήγορα να διαπιστώ αν το αρχείο έχει κρυφές διαφάνειες και πόσες;
Όταν τα αποθηκευμένα μεταδεδομένα εγγράφου είναι επαρκή, διαβάστε το IDocumentProperties.getHiddenSlides μέσω του PresentationFactory.getPresentationInfo και του IPresentationInfo.readDocumentProperties. Αυτό είναι κατάλληλο για ελαφρύ απόθεμα. Εάν η παρουσίαση έχει τροποποιηθεί στη μνήμη, τα αποθηκευμένα μεταδεδομένα μπορεί να λείπουν ή να είναι ξεπερασμένα· ή αν χρειάζεται να επαληθεύσετε τις τρέχουσες τιμές, επαναλάβετε μέσω του Presentation.getSlides και ελέγξτε τη μέθοδο ISlide.getHidden για κάθε διαφάνεια.
Μπορώ να εντοπίσω αν χρησιμοποιείται προσαρμοσμένο μέγεθος και προσανατολισμός διαφάνειας και αν διαφέρουν από τις προεπιλογές;
Ναι. Φορτώστε την παρουσίαση και καλέστε το Presentation.getSlideSize. Χρησιμοποιήστε τα ISlideSize.getType, ISlideSize.getSize και ISlideSize.getOrientation για να συγκρίνετε τις τρέχουσες ρυθμίσεις με τις προεπιλεγμένες διαστάσεις και προσανατολισμό.
Υπάρχει γρήγορος τρόπος να δω αν τα διαγράμματα αναφέρονται σε εξωτερικές πηγές δεδομένων;
Ναι. Εντοπίστε κάθε Chart και καλέστε το IChartData.getDataSourceType. Για εξωτερικό φύλλο εργασίας, καλέστε το IChartData.getExternalWorkbookPath. Ο τύπος πηγής δεδομένων και η διαδρομή υποδεικνύουν εξωτερική αναφορά, αλλά η επαλήθευση της διαθεσιμότητας του στόχου απαιτεί ξεχωριστό έλεγχο πόρων.
Πώς μπορώ να αξιολογήσω ‘βαριές’ διαφάνειες που μπορεί να επιβραδύνουν την απόδοση ή την εξαγωγή PDF;
Δεν υπάρχει μία ενιαία ιδιότητα πολυπλοκότητας. Διατρέξτε το Presentation.getSlides και τη συλλογή IBaseSlide.getShapes της κάθε διαφάνειας. Χρησιμοποιήστε τον αριθμό μορφών και την παρουσία μεγάλων εικόνων, εφέ, κινήσεων ή πολυμέσων ως δείκτες, και μετρήστε μια αντιπροσωπευτική απόδοση ή εξαγωγή πριν θεωρήσετε μια διαφάνεια ως επιβεβαιωμένο bottleneck απόδοσης.