Καθορίστε το αρχικό μορφότυπο παρουσίασης στο .NET
Επισκόπηση
Μετά τη φόρτωση μιας παρουσίασης, διαβάστε την ιδιότητα μόνο για ανάγνωση Presentation.SourceFormat για να προσδιορίσετε το αρχικό της μορφότυπο. Η ιδιότητα είναι επίσης διαθέσιμη μέσω IPresentation.SourceFormat. Χρησιμοποιήστε την όταν η επόμενη επεξεργασία εξαρτάται από τη μορφή από την οποία φορτώθηκε η τρέχουσα παρουσίαση.
Η μορφή προέλευσης διαφέρει από το SaveFormat που επιλέγεται για ένα αρχείο εξόδου. Η αποθήκευση σε διαφορετική μορφή δεν αλλάζει τη μορφή προέλευσης της υπάρχουσας παρουσίασης.
Ανάγνωση της μορφής προέλευσης ενός αρχείου
Αυτό το παράδειγμα απαιτεί ένα υπάρχον αρχείο sample.pptx. Φορτώνει το αρχείο και επιλέγει μια πολιτική επεξεργασίας της εφαρμογής χρησιμοποιώντας Presentation.SourceFormat, αντί του ονόματος αρχείου. Αλλάξτε τη διαδρομή εισόδου για να δοκιμάσετε άλλες μορφές. Το παράδειγμα εκτυπώνει την επιλεγμένη πολιτική· αντικαταστήστε τα μηνύματα με τη λογική της εφαρμογής σας.
using System;
using Aspose.Slides;
using var presentation = new Presentation("sample.pptx");
switch (presentation.SourceFormat)
{
case SourceFormat.Ppt:
case SourceFormat.Pps:
case SourceFormat.Pot:
Console.WriteLine("Use the legacy PowerPoint processing policy.");
break;
case SourceFormat.Pptx:
Console.WriteLine("Use the standard PPTX processing policy.");
break;
default:
Console.WriteLine($"Use the general policy for {presentation.SourceFormat}.");
break;
}
Αναγνώριση των υποστηριζόμενων τιμών
Η απαρίθμηση SourceFormat διακρίνει τις παρακάτω μορφές παρουσίασης. Οι παρακάτω καταλήξεις είναι συμβατικές, όχι ανακατασκευή του αρχικού ονόματος αρχείου.
| Τιμή SourceFormat | Κατάληξη | Μορφή |
|---|---|---|
Ppt |
.ppt |
PowerPoint 97–2003 παρουσίαση |
Pptx |
.pptx |
Παρουσίαση Office Open XML |
Pptm |
.pptm |
Παρουσίαση Office Open XML με μακροεντολή |
Pps |
.pps |
Παρουσίαση διαφανειών PowerPoint 97–2003 |
Ppsx |
.ppsx |
Παρουσίαση διαφανειών Office Open XML |
Ppsm |
.ppsm |
Παρουσίαση διαφανειών Office Open XML με μακροεντολή |
Pot |
.pot |
Πρότυπο PowerPoint 97–2003 |
Potx |
.potx |
Πρότυπο Office Open XML |
Potm |
.potm |
Πρότυπο Office Open XML με μακροεντολή |
Odp |
.odp |
Παρουσίαση OpenDocument |
Otp |
.otp |
Πρότυπο παρουσίασης OpenDocument |
Fodp |
.fodp |
Παρουσίαση Flat XML ODF |
Xml |
.xml |
Παρουσίαση PowerPoint XML |
Ανάγνωση της μορφής προέλευσης από ροή
Αυτό το παράδειγμα απαιτεί ένα υπάρχον αρχείο sample.pps. Η ανάγνωση των bytes του σε μνήμη‑ροή προσομοιώνει είσοδο που λαμβάνεται χωρίς όνομα αρχείου, όπως τιμή βάσης δεδομένων ή ανεβασμένο πίνακα byte. Ο κατασκευαστής Presentation λαμβάνει μόνο τη ροή.
using System;
using System.IO;
using Aspose.Slides;
var bytes = File.ReadAllBytes("sample.pps");
using var stream = new MemoryStream(bytes);
using var presentation = new Presentation(stream);
Console.WriteLine($"Source format: {presentation.SourceFormat}");
Τα PPT, PPS και POT χρησιμοποιούν την ίδια υποκείμενη δυαδική μορφή. Κατά τη φόρτωση με διαδρομή αρχείου, η κατάληξη μπορεί να βοηθήσει στη διάκριση παρουσίασης διαφανειών ή προτύπου. Χωρίς όνομα αρχείου, το παλιό περιεχόμενο PPS και POT μπορεί να αναφερθεί ως SourceFormat.Ppt; το παράδειγμα PPS παραπάνω αναφέρει Ppt.
Εάν η εφαρμογή σας πρέπει να διατηρήσει τη διάκριση, κρατήστε το αρχικό όνομα αρχείου ή τα μεταδεδομένα υποτύπου ξεχωριστά. Μια κατάληξη είναι χρήσια υπόδειξη για αυτά τα παλιά υποτύπους, αλλά δεν πρέπει να είναι η μόνη βάση για την ταυτοποίηση τυχαίου περιεχομένου παρουσίασης.
Σύγκριση ανίχνευσης πριν και μετά τη φόρτωση
Χρησιμοποιήστε το PresentationFactory.GetPresentationInfo και το IPresentationInfo.LoadFormat όταν χρειάζεται να ελέγξετε ένα αρχείο πριν τη φόρτωση του πλήρους μοντέλου αντικειμένων παρουσίασης. Χρησιμοποιήστε το Presentation.SourceFormat όταν η παρουσίαση υπάρχει ήδη.
Αυτό το παράδειγμα απαιτεί sample.pptx και εκτυπώνει Pptx για και τις δύο ελέγχους. Σε παραγωγή, επιλέξτε το κατάλληλο API για το στάδιο επεξεργασίας· μια ήδη φορτωμένη παρουσίαση δεν χρειάζεται δεύτερο έλεγχο μόνο για να λάβει τη μορφή προέλευσής της.
using System;
using Aspose.Slides;
var path = "sample.pptx";
var information = PresentationFactory.Instance.GetPresentationInfo(path);
Console.WriteLine($"Before loading: {information.LoadFormat}");
using var presentation = new Presentation(path);
Console.WriteLine($"After loading: {presentation.SourceFormat}");
Τα αποτελέσματα έχουν διαφορετικούς τύπους απαρίθμησης: LoadFormat και SourceFormat. Μην τα συγκρίνετε μετατρέποντάς τα σε αριθμητικές τιμές ή υποθέστε ότι κάθε μορφή έχει τα ίδια αποτελέσματα ανίχνευσης. Στο έλεγχο αποθήκευσης‑επανάγνωσης που περιγράφεται παρακάτω, το PowerPoint XML αναφέρθηκε ως LoadFormat.Unknown πριν από τη φόρτωση και ως SourceFormat.Xml μετά τη φόρτωση.
Διατήρηση ξεχωριστών μορφών προέλευσης και εξόδου
Αυτό το παράδειγμα απαιτεί sample.pptx και γράφει converted.odp. Εκτυπώνει Pptx πριν και μετά την αποθήκευση της αρχικής παρουσίασης. Μόνο η νέα παρουσίαση που φορτώνεται από την έξοδο ODP αναφέρει Odp.
using System;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
Console.WriteLine($"Before saving: {presentation.SourceFormat}");
presentation.Save("converted.odp", SaveFormat.Odp);
Console.WriteLine($"After saving: {presentation.SourceFormat}");
using var reopened = new Presentation("converted.odp");
Console.WriteLine($"Reopened output: {reopened.SourceFormat}");
Μια παρουσίαση που δημιουργείται από το μηδέν με new Presentation() αναφέρει SourceFormat.Pptx. Δεν έχει αρχείο εισόδου: αυτή είναι η προεπιλεγμένη τιμή για νέα παρουσίαση, όχι ένδειξη ότι φορτώθηκε αρχείο PPTX. Καταγράψτε αν η εφαρμογή δημιούργησε ή φόρτωσε την παρουσίαση ξεχωριστά εάν η διάκριση αυτή έχει σημασία.
Αντιστοίχιση μορφής προέλευσης σε κατάληξη
Το παρακάτω παράδειγμα απαιτεί sample.pptx. Αντιστοιχίζει κάθε τρέχουσες υποστηριζόμενη τιμή SourceFormat σε συμβατική κατάληξη, χωρίς να αναλύσει το όνομα αρχείου εισόδου. Η εναλλακτική αποτρέπει την άπρακτη ανάθεση κατάληξης σε μη αναγνωρισμένη τιμή.
using System;
using Aspose.Slides;
using var presentation = new Presentation("sample.pptx");
var extension = presentation.SourceFormat switch
{
SourceFormat.Ppt => ".ppt",
SourceFormat.Pptx => ".pptx",
SourceFormat.Pptm => ".pptm",
SourceFormat.Pps => ".pps",
SourceFormat.Ppsx => ".ppsx",
SourceFormat.Ppsm => ".ppsm",
SourceFormat.Pot => ".pot",
SourceFormat.Potx => ".potx",
SourceFormat.Potm => ".potm",
SourceFormat.Odp => ".odp",
SourceFormat.Otp => ".otp",
SourceFormat.Fodp => ".fodp",
SourceFormat.Xml => ".xml",
_ => null
};
Console.WriteLine(extension ?? "No extension mapping is available.");
Αυτή η αντιστοίχηση δεν μετατρέπει αρχείο ή δεν επανακτά παλαιό υποτύπο PPS/POT που χάθηκε κατά τη φόρτωση ροής. Για πραγματική αποθήκευση, επιλέξτε ρητά ένα SaveFormat, ή χρησιμοποιήστε τη μετατροπή που φαίνεται στο Save Presentations in Their Original Format.
Επαλήθευση μορφών με αποθήκευση και επανάνοιγμα
Αυτό το αυτόνομο παράδειγμα δημιουργεί μια παρουσίαση και γράφει τρία αρχεία στον τρέχοντα φάκελο, αντικαθιστώντας αρχεία με τα ίδια ονόματα. Ξαναφορτώνει κάθε έξοδο είτε με διαδρομή είτε μέσω μνήμης‑ροής. Για PPTX και ODP, και οι δύο διαδρομές αναφέρουν τη μορφή αποθηκευμένου αρχείου. Για PPS, η φόρτωση με διαδρομή αναφέρει Pps, ενώ η φόρτωση των ίδιων bytes χωρίς όνομα αρχείου αναφέρει Ppt.
using System;
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var formats = new[] { SaveFormat.Pptx, SaveFormat.Odp, SaveFormat.Pps };
foreach (var format in formats)
{
var path = $"roundtrip.{format.ToString().ToLowerInvariant()}";
presentation.Save(path, format);
using var fromFile = new Presentation(path);
var bytes = File.ReadAllBytes(path);
using var stream = new MemoryStream(bytes);
using var fromStream = new Presentation(stream);
Console.WriteLine($"{format}: file={fromFile.SourceFormat}, stream={fromStream.SourceFormat}");
}
Ο ίδιος έλεγχος με όλες τις παραπάνω μορφές παρήγαγε τα παρακάτω αποτελέσματα για παρουσιάσεις που δημιουργήθηκαν με τις αντίστοιχες καταλήξεις:
| Αποθηκευμένη μορφή | SourceFormat από διαδρομή αρχείου | SourceFormat από ροή χωρίς όνομα |
|---|---|---|
| PPT | Ppt |
Ppt |
| PPTX, PPTM | Pptx, Pptm αντίστοιχα |
Ίδιο με τη διαδρομή αρχείου |
| PPS | Pps |
Ppt |
| PPSX, PPSM | Ppsx, Ppsm αντίστοιχα |
Ίδιο με τη διαδρομή αρχείου |
| POT | Pot |
Ppt |
| POTX, POTM | Potx, Potm αντίστοιχα |
Ίδιο με τη διαδρομή αρχείου |
| ODP, OTP | Odp, Otp αντίστοιχα |
Ίδιο με τη διαδρομή αρχείου |
| FODP | Fodp |
Fodp |
| PowerPoint XML | Xml |
Xml |
Σε αυτούς τους ελέγχους, η μοναδική κανονικοποίηση μορφής προέλευσης ήταν το PPS/POT σε Ppt για ροές χωρίς όνομα. Ο πίνακας περιγράφει την ταυτοποίηση μορφής, όχι τη διατήρηση όλων των χαρακτηριστικών της παρουσίασης κατά τη μετατροπή.
Συχνές ερωτήσεις
Αλλάζει η αποθήκευση σε ODP τη μορφή προέλευσης μιας παρουσίασης που φορτώθηκε από PPTX;
Όχι. Η υπάρχουσα παρουσίαση εξακολουθεί να αναφέρει Pptx. Μια παρουσίαση που φορτώνεται από το αποθηκευμένο αρχείο ODP αναφέρει Odp.
Μπορεί μια ροή πάντα να διακρίνει μια παλιά παρουσίαση, διαφάνεια και πρότυπο;
Όχι. Τα PPT, PPS και POT μοιράζονται την δυαδική μορφή. Κρατήστε το όνομα αρχείου ή τα μεταδεδομένα υποτύπου ξεχωριστά όταν απαιτείται αυτή η διάκριση.
Ποιο API πρέπει να χρησιμοποιήσω εάν η παρουσίαση είναι ήδη φορτωμένη;
Διαβάστε το Presentation.SourceFormat. Χρησιμοποιήστε το PresentationFactory.GetPresentationInfo για έλεγχο πριν τη φόρτωση.