Az eredeti prezentációs formátum meghatározása .NET-ben
Áttekintés
A prezentáció betöltése után olvassa el csak olvasható Presentation.SourceFormat tulajdonságot, hogy meghatározza az eredeti formátumát. A tulajdonság elérhető az IPresentation.SourceFormat néven is. Használja, amikor a későbbi feldolgozás a formátumtól függ, ahonnan a jelenlegi példány betöltődött.
A forrásformátum különbözik a kimeneti fájlhoz kiválasztott SaveFormat‑tól. Más formátumba mentés nem változtatja meg a meglévő példány forrásformátumát.
A fájl forrásformátumának olvasása
Ehhez a példához szükség van egy meglévő sample.pptx fájlra. A fájlt betölti, és az alkalmazás feldolgozási szabályát a Presentation.SourceFormat használatával választja ki, a fájlnév helyett. Módosítsa a bemeneti útvonalat más formátumok kipróbálásához. A példa kiírja a kiválasztott szabályt; cserélje le az üzeneteket saját alkalmazáslogikájára.
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;
}
A támogatott értékek felismerése
A SourceFormat felsorolás megkülönbözteti a következő prezentációformátumokat. Az alábbi kiterjesztések konvencionálisak, nem az eredeti fájlnév újraalkotása.
| SourceFormat érték | Kiterjesztés | Formátum |
|---|---|---|
Ppt |
.ppt |
PowerPoint 97–2003 prezentáció |
Pptx |
.pptx |
Office Open XML prezentáció |
Pptm |
.pptm |
Makróval bővített Office Open XML prezentáció |
Pps |
.pps |
PowerPoint 97–2003 diavetítés |
Ppsx |
.ppsx |
Office Open XML diavetítés |
Ppsm |
.ppsm |
Makróval bővített Office Open XML diavetítés |
Pot |
.pot |
PowerPoint 97–2003 sablon |
Potx |
.potx |
Office Open XML sablon |
Potm |
.potm |
Makróval bővített Office Open XML sablon |
Odp |
.odp |
OpenDocument prezentáció |
Otp |
.otp |
OpenDocument prezentáció sablon |
Fodp |
.fodp |
Flat XML ODF prezentáció |
Xml |
.xml |
PowerPoint XML prezentáció |
A forrásformátum olvasása adatfolyamból
Ehhez a példához egy meglévő sample.pps fájl szükséges. A fájl bájtjainak memóriatömbe beolvasása olyan bemenetet modellez, amely fájlnév nélkül érkezik, például adatbázis‑érték vagy feltöltött bájt tömb. A Presentation konstruktor csak a folyamatot kapja meg.
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}");
A PPT, PPS és POT ugyanazt a bináris formátumot használja. Fájlúton történő betöltéskor a kiterjesztés segíthet megkülönböztetni a diavetítést vagy sablont. Fájlnév nélkül a régi PPS és POT tartalom SourceFormat.Ppt‑ként jelenthető; a fenti PPS példa Ppt‑t jelent.
Ha az alkalmazásnak meg kell őriznie a különbséget, akkor tartsa meg eredeti fájlnevét vagy alkategória metaadatait külön. A kiterjesztés hasznos jelzés ezen régi alkategóriák esetén, de nem lehet az egyetlen alap az előre nem definiált prezentációtartalom azonosításához.
Az észlelés összehasonlítása betöltés előtt és után
Használja a PresentationFactory.GetPresentationInfo és az IPresentationInfo.LoadFormat elemeket, amikor a fájlt a teljes prezentációs objektummodell betöltése előtt kell ellenőrizni. Használja a Presentation.SourceFormat‑t, ha a példány már létezik.
Ez a példa sample.pptx‑t igényel, és mindkét ellenőrzésnél Pptx‑et ír ki. Éles környezetben válassza a feldolgozási szakasznak megfelelő API‑t; egy már betöltött prezentációnak nem szükséges második ellenőrzés a forrásformátum lekéréséhez.
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}");
Az eredmények különböző felsorolástípusok: LoadFormat és SourceFormat. Ne hasonlítsa őket numerikus értékük átalakításával, és ne feltételezze, hogy minden formátumnak azonos észlelési eredménye van. Az alább leírt mentés‑és‑újratöltés ellenőrzésnél a PowerPoint XML betöltés előtt LoadFormat.Unknown‑ként, betöltés után pedig SourceFormat.Xml‑ként jelent meg.
A forrás- és kimeneti formátumok külön tartása
Ez a példa sample.pptx‑t igényel, és converted.odp‑t ír. Mind a mentés előtt, mind után Pptx‑et ír ki az eredeti példányról. Csak az ODP kimenetből betöltött új példány Odp‑ként jelentkezik.
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}");
A new Presentation()‑val fejlesztett prezentáció SourceFormat.Pptx‑et jelent. Nincs bemeneti fájlja: ez az újonnan létrehozott példány alapértelmezett értéke, nem bizonyítja, hogy PPTX fájlt töltöttek be. Kövesse nyomon, hogy az alkalmazás létrehozta vagy betöltötte a példányt, ha ez a különbség fontos.
Forrásformátum leképezése kiterjesztésre
A következő példa sample.pptx‑t igényel. Minden jelenleg támogatott SourceFormat értéket leképez egy konvencionális kiterjesztésre, a bemeneti fájlnév elemzése nélkül. A tartalék megakadályozza a nem felismert értékhez csendes kiterjesztés hozzárendelését.
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.");
Ez a leképezés nem konvertál fájlt, és nem állítja vissza a stream‑betöltés során elveszett régi PPS/POT alkategóriát. A tényleges mentéshez válasszon egy SaveFormat értéket kifejezetten, vagy használja a Save Presentations in Their Original Format példában bemutatott konverziót.
Formátumok ellenőrzése mentéssel és újranyitással
Ez az önálló példa prezentációt hoz létre, és három fájlt ír a munkakönyvtárba, felülírva az azonos nevű fájlokat. Minden kimenetet újra megnyit fájlúton és memóriatömben egyaránt. PPTX‑nél és ODP‑nél mindkét útvonal a mentett formátumot jelzi. PPS‑nél a fájlúton történő betöltés Pps‑t ad, míg névtelen bájtok betöltése Ppt‑t jelent.
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}");
}
Az előbb felsorolt összes formátummal végzett ellenőrzés a megfelelő kiterjesztésű generált prezentációkra a következő eredményeket adta:
| Mentett formátum | SourceFormat fájlútról | SourceFormat névtelen folyamatról |
|---|---|---|
| PPT | Ppt |
Ppt |
| PPTX, PPTM | Pptx, Pptm |
Ugyanaz, mint fájlúton |
| PPS | Pps |
Ppt |
| PPSX, PPSM | Ppsx, Ppsm |
Ugyanaz, mint fájlúton |
| POT | Pot |
Ppt |
| POTX, POTM | Potx, Potm |
Ugyanaz, mint fájlúton |
| ODP, OTP | Odp, Otp |
Ugyanaz, mint fájlúton |
| FODP | Fodp |
Fodp |
| PowerPoint XML | Xml |
Xml |
Ezekben az ellenőrzésekben az egyetlen forrásformátum normalizálás a nameless stream‑ek esetén a PPS/POT → Ppt volt. A táblázat a formátum azonosítását írja le, nem pedig minden prezentációs funkció megőrzését átalakítás során.
GYIK
Megváltozik-e az ODP-be mentés során a PPTX‑ből betöltött prezentáció forrásformátuma?
Nem. A meglévő példány továbbra is Pptx‑et jelent. A mentett ODP fájlból betöltött példány Odp‑t jelent.
Képes egy adatfolyam mindig megkülönböztetni a régi prezentációt, diavetítést és sablont?
Nem. A PPT, PPS és POT ugyanazt a bináris formátumot használja. Ha a különbség fontos, tartsa meg a fájlnevet vagy az alkategória metaadatait külön.
Melyik API‑t kell használni, ha a prezentáció már betöltődött?
Olvassa a Presentation.SourceFormat. Használja a PresentationFactory.GetPresentationInfo‑t az betöltés előtti ellenőrzéshez.