Prezentációs információ lekérése és frissítése Java-ban
Áttekintés
Aspose.Slides képes azonosítani egy prezentáció formátumát, és beolvasni a dokumentum metaadatait anélkül, hogy teljes prezentációs objektummodellt hozna létre. Ez hasznos, ha fájlokat kell osztályozni, készíteni egy leltárt, vagy vizsgálni a tulajdonságokat, mielőtt eldöntené, hogy betölti-e és feldolgozza a prezentáció tartalmát.
Ez a cikk bemutatja a könnyű ellenőrzést a PresentationFactory és az IPresentationInfo segítségével, valamint a célzott frissítéseket az IDocumentProperties használatával.
Ellenőrizze a prezentáció formátumát
Ha már betöltött prezentációja van, lásd a Determine the Original Presentation Format cikket a betöltés utáni meghatározáshoz és a régi PPT, PPS és POT folyamok korlátozásaihoz.
Használja a PresentationFactory.getPresentationInfo metódust egy fájl ellenőrzéséhez anélkül, hogy a Presentation példányt hozna létre. Az IPresentationInfo.getLoadFormat metódus jelenti a felismert formátumot, például PPTX, PPT vagy 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);
}
Könnyű prezentációs leltár felépítése
Ha sok prezentációs fájlt dolgoz fel, szüksége lehet egy kompakt leltárra az érvényesítéshez, indexeléshez vagy dokumentumkezelő rendszerhez. Ebben a helyzetben használja a PresentationFactory.getPresentationInfo metódust, hogy megszerezze az IPresentationInfo objektumot, majd hívja a IPresentationInfo.readDocumentProperties metódust a dokumentum metaadatainak beolvasásához. Ez a megközelítés nem hoz létre a Presentation példányt, és nem igényli a teljes prezentációs objektummodell bejárását.
Az IDocumentProperties által biztosított kiterjesztett tulajdonságok a következő leltár értékeket adják:
| Módszer | Leltár érték |
|---|---|
| getSlides | A diák összes száma. |
| getHiddenSlides | Rejtett diák száma. |
| getNotes | Megjegyzéseket tartalmazó diák száma. |
| getParagraphs | A bekezdések összes száma, ha elérhető. |
| getWords | A szavak összes száma. |
| getMultimediaClips | Az audio- és videoklipek összes száma. |
A következő példa ezeknek az értékeknek a beolvasását mutatja be anélkül, hogy a Presentation objektumot hozna létre, és egy kompakt leltárt nyomtat. Emellett kombinálja a getHeadingPairs és a getTitlesOfParts használatát a tartalmi csoportok, például betűtípusok, sablonok és diacímek megjelenítéséhez.
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++;
}
}
}
Minden [IHeadingPair] egy csoportnevet és a csoportban lévő elemek számát adja meg. Az IDocumentProperties.getTitlesOfParts egy lapos, rendezett tömböt ad vissza, ezért a csoportonként megadott egymást követő címek számát kell felhasználni.
Tárolt metaadatok és formátumkorlátozások
Az IPresentationInfo.readDocumentProperties által visszaadott leltár tulajdonságok a forrásdokumentumban elérhető metaadatokat tükrözik. Az Aspose.Slides nem tölti be és nem járja be a prezentációs objektummodellt ezeknek az értékeknek az újraszámításához ebben a hívásban. A hiányzó tulajdonságokat alapértelmezett értékek képviselik, és a tárolt értékek elavultak lehetnek, ha az utoljára fájlt mentő alkalmazás nem frissítette a dokumentumtulajdonságait.
- PPTX: A formátum kiterjesztett dokumentumtulajdonságokat biztosít a diák, megjegyzések, rejtett diák, bekezdések, szavak és multimédia számához, valamint a cípcsoportokhoz és a részcímekhez. Az elérhetőség attól függ, mely tulajdonságokat írta a dokumentum előállítója.
- PPT: A bináris formátum képes tárolni a megfelelő dokumentum-összegző tulajdonságokat. Ha egy tulajdonság hiányzik vagy nem frissítette a dokumentum előállítója, az Aspose.Slides a tárolt vagy alapértelmezett értéket adja vissza, nem számolja ki a diák alapján.
- ODP: Az OpenDocument metaadatok általános dokumentumstatisztikákat biztosítanak, például oldalak, bekezdések és szavak számát, de ezek az értékek nem térképezhetők minden PowerPoint-specifikus kiterjesztett tulajdonságra. A rejtett diák, megjegyzések, multimédia, cípcsoport és részcím metaadatai előfordulhatnak, hogy nem állnak rendelkezésre, és a leltár tulajdonságok alapértelmezett értéket adhatnak vissza. Ne tekintse a nulla értéket vagy egy üres tömböt bizonyítéknak arra, hogy a megfelelő tartalom hiányzik.
Használja a könnyű metaadat-kezelési megközelítést leltárak és előzetes ellenőrzések esetén. Töltse be a prezentációt, és ellenőrizze annak élő objektummodelljét, ha az eredménynek a memóriában lévő változásoknak is tükröződnie kell, vagy ha a tényleges prezentációs tartalmat kell ellenőriznie.
Prezentáció tulajdonságainak frissítése
Az IPresentationInfo.readDocumentProperties által visszaadott tulajdonságok szintén megváltoztathatók anélkül, hogy a Presentation példányt létrehozná. Alkalmazza a változtatásokat az IPresentationInfo.updateDocumentProperties metódussal, majd írja ki a kötött prezentációt az IPresentationInfo.writeBindedPresentation metódussal.
Az alábbi kép az eredeti dokumentumtulajdonságokat mutatja.

A következő példa módosítja a címet és az utolsó mentés időpontját, majd az eredményt egy új fájlba írja:
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);
}
Az alábbi kép a frissített dokumentumtulajdonságokat mutatja.

Hasznos hivatkozások
Kapcsolódó biztonsági ellenőrzések és védelmi beállítások tekintetében lásd az alábbi cikkeket:
GYIK
Hogyan ellenőrizhetem, hogy a betűtípusok be vannak-e ágyazva, és melyek azok?
Töltsd be a prezentációt, és használd a Presentation.getFontsManager metódust. Hívd meg az IFontsManager.getEmbeddedFonts metódust a beágyazott betűtípusok lekéréséhez, illetve az IFontsManager.getFonts metódust a prezentáció által használt betűtípusokhoz. Hasonlítsd össze a két eredményt, hogy megtaláld azokat a betűtípusokat, amelyek a megjelenítéshez szükségesek, de nincsenek beágyazva.
Hogyan tudom gyorsan megállapítani, hogy a fájl rejtett diákat tartalmaz-e, és hány darabot?
Ha a tárolt dokumentum metaadatai elegendőek, olvasd a IDocumentProperties.getHiddenSlides metódust a PresentationFactory.getPresentationInfo és az IPresentationInfo.readDocumentProperties segítségével. Ez alkalmas egy könnyű leltárra. Ha a prezentáció memóriában módosult, a tárolt metaadat hiányozhat vagy elavult lehet, vagy ha élő értékeket kell ellenőrizned, járd be a Presentation.getSlides gyűjteményt, és vizsgáld meg minden dia ISlide.getHidden metódusát.
Detektálhatom-e, hogy egyedi dia méret és orientáció van-e használatban, és eltérnek-e az alapértelmezettektől?
Igen. Töltsd be a prezentációt, és hívd meg a Presentation.getSlideSize metódust. Használd az ISlideSize.getType, ISlideSize.getSize és ISlideSize.getOrientation metódusokat az aktuális beállítások összehasonlításához a várt előre beállított értékekkel és méretekkel.
Van-e gyors módja annak, hogy megtudjam, a diagramok külső adatforrásokra hivatkoznak-e?
Igen. Keress minden Chart elemet, és hívd meg az IChartData.getDataSourceType metódust. Külső munkafüzet esetén hívd meg az IChartData.getExternalWorkbookPath metódust. A adatforrás típusa és útvonala jelzi a külső hivatkozást, de annak elérhetőségének ellenőrzése külön erőforrásellenőrzést igényel.
Hogyan értékelhetem a „nehéz” diákat, amelyek lassíthatják a renderelést vagy a PDF exportot?
Nincs egyetlen komplexitási tulajdonság. Járd be a Presentation.getSlides gyűjteményt, és minden dia IBaseSlide.getShapes kollekcióját. Használj alakzat-számlálásokat, nagy képeket, effektusokat, animációkat vagy multimédiát szűrőjelzőként, és végezz egy reprezentatív renderelést vagy exportot, mielőtt a diát megerősített teljesítménybottlenecknek tekintenéd.