Prezentáció-információk lekérése és frissítése Androidon
Áttekintés
Az Aspose.Slides képes azonosítani egy bemutató formátumát és beolvasni a dokumentum metaadatait anélkül, hogy teljes bemutató objektummodellt hozna létre. Ez akkor hasznos, amikor fájlokat kell osztályozni, leltárt készíteni, vagy a tulajdonságokat ellenőrizni kell, mielőtt eldöntené, hogy betölti és feldolgozza a bemutató tartalmát.
Ez a cikk bemutatja a könnyű ellenőrzést a PresentationFactory és IPresentationInfo segítségével, valamint a célzott módosításokat az IDocumentProperties használatával.
Ellenőrizze a bemutató formátumát
Ha már betöltött bemutatója van, lásd a Határozza meg az eredeti bemutató formátumát cikket a betöltés utáni detektáláshoz, valamint a régi PPT, PPS és POT adatfolyamok korlátaival kapcsolatban.
Használja a PresentationFactory.getPresentationInfo metódust egy fájl ellenőrzéséhez a Presentation példány létrehozása nélkül. Az IPresentationInfo.getLoadFormat metódus jelzi 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észítsen könnyű bemutató leltárt
Ha sok bemutatófájlt dolgoz fel, előfordulhat, hogy egy kompakt leltárra van szüksége érvényesítéshez, indexeléshez vagy dokumentumkezelő rendszerhez. Ebben a helyzetben használja a PresentationFactory.getPresentationInfo metódust egy IPresentationInfo objektum beszerzéséhez, majd hívja a IPresentationInfo.readDocumentProperties metódust a dokumentum metaadatainak beolvasásához. Ez a megközelítés nem hoz létre Presentation példányt, és nem igényli a teljes bemutató objektummodell bejárását.
Az IDocumentProperties által biztosított kiterjesztett tulajdonságok a következő leltárértékeket adják meg:
| Metódus | Leltár érték |
|---|---|
| getSlides | A diák összes száma. |
| getHiddenSlides | A rejtett diák száma. |
| getNotes | A jegyzettel ellátott diák száma. |
| getParagraphs | A bekezdések összes száma, ha elérhető. |
| getWords | A szavak összes száma. |
| getMultimediaClips | Az audio- és videóklippek összes száma. |
A következő példa beolvassa ezeket az értékeket a Presentation objektum létrehozása nélkül, és egy kompakt leltárt jelenít meg. Emellett kombinálja a getHeadingPairs és a getTitlesOfParts metódusokat a tartalomcsoportok, például betűkészletek, témák és dia cí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 sorozatos címek számát a megfelelő heading pair határozza meg.
Tárolt metaadatok és formátumkorlátok
A IPresentationInfo.readDocumentProperties által visszaadott leltártulajdonságok a forrásdokumentumban elérhető metaadatokat tükrözik. Az Aspose.Slides nem tölti be és nem járja be a bemutató objektummodellt, hogy újraszámolja ezeket az értékeket ennél a hívásnál. A hiányzó tulajdonságok alapértelmezett értékekkel jelennek meg, és a tárolt értékek elavultak lehetnek, ha a fájlt utoljára mentő alkalmazás nem frissítette a dokumentum tulajdonságait.
- PPTX: A formátum kiterjesztett dokumentumtulajdonságokat biztosít a diák, jegyzetek, rejtett diák, bekezdések, szavak és multimédia elemek számlálásához, valamint a heading párok és részcímek tekintetében. Az elérhetőség a dokumentum előállítója által írt tulajdonságoktól függ.
- PPT: A bináris formátum képes tárolni a megfelelő dokumentum-összegző tulajdonságokat. Ha egy tulajdonság hiányzik vagy a dokumentum előállítója nem frissítette, az Aspose.Slides a tárolt vagy alapértelmezett értéket adja vissza, a diák alapján történő kiszámítás helyett.
- ODP: Az OpenDocument metaadatok általános dokumentumstatisztikákat nyújtanak, például oldal-, bekezdés- és szószámokat, de ezek az értékek nem térképezhetők minden PowerPoint-specifikus kiterjesztett tulajdonságra. A rejtett diák, jegyzet-diák, multimédia, heading párok és részcím metaadatok hiányozhatnak, és a leltártulajdonságok alapértelmezett értékeket adhatnak vissza. Ne tekintse a null értéket vagy egy üres tömböt végleges bizonyítékként arra, hogy a megfelelő tartalom hiányzik.
Használja a könnyű metaadat megközelítést leltárokhoz és előzetes ellenőrzésekhez. Töltse be a bemutatót és ellenőrizze annak élő objektummodelljét, amikor az eredménynek a memóriában történt változásokat kell tükröznie, vagy amikor a tényleges bemutató tartalmát kell ellenőrizni.
Bemutató tulajdonságok frissítése
A IPresentationInfo.readDocumentProperties által visszaadott tulajdonságok szintén módosíthatók a Presentation példány létrehozása nélkül. Alkalmazza a változtatásokat az IPresentationInfo.updateDocumentProperties metódussal, majd írja ki a kapcsolt bemutatót az IPresentationInfo.writeBindedPresentation metódussal.
A következő kép az eredeti dokumentum tulajdonságait mutatja.

A következő példa megváltoztatja 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);
}

Hasznos hivatkozások
A kapcsolódó biztonsági ellenőrzések és védelmi beállítások tekintetében lásd a következő cikkeket:
GYIK
Hogyan ellenőrizhetem, hogy a betűkészletek be vannak-e ágyazva és melyek azok?
Töltse be a bemutatót, és használja a Presentation.getFontsManager metódust. Hívja az IFontsManager.getEmbeddedFonts metódust a beágyazott betűkészletek lekéréséhez, és az IFontsManager.getFonts metódust a bemutató által használt betűkészletekhez. Hasonlítsa össze a két eredményt, hogy megtalálja azokat a betűkészleteket, amelyek a megjelenítéshez szükségesek, de nincsenek beágyazva.
Hogyan tudom gyorsan megállapítani, hogy a fájl tartalmaz-e rejtett diákot, és hány darab van?
Ha a tárolt dokumentum metaadatai elegendőek, olvassa el az IDocumentProperties.getHiddenSlides értékét a PresentationFactory.getPresentationInfo és az IPresentationInfo.readDocumentProperties segítségével. Ez egy könnyű leltárra alkalmas. Ha a bemutató memóriában módosult, a tárolt metaadatok hiányozhatnak vagy elavultak lehetnek, vagy ha élő értékeket kell ellenőrizni, járja be a Presentation.getSlides kollekciót, és minden dia ISlide.getHidden metódusát vizsgálja.
Detektálhatom-e, hogy egyedi dia méret és tájolás van-e használatban, és eltérnek-e az alapértelmezettektől?
Igen. Töltse be a bemutatót, és hívja a Presentation.getSlideSize metódust. Használja az ISlideSize.getType, ISlideSize.getSize és ISlideSize.getOrientation metódusokat az aktuális beállítások összehasonlításához az elvárt alapértelmezett méretekkel és orientációval.
Van gyors módszer arra, hogy lássam, a diagramok külső adatforrásra hivatkoznak-e?
Igen. Keresse meg minden Chart elemet, és hívja az IChartData.getDataSourceType metódust. Külső munkafüzet esetén hívja az IChartData.getExternalWorkbookPath metódust. Az adatforrás típusa és elérési útja azonosítja a külső hivatkozást, de annak elérhetőségének ellenőrzése külön erőforrás-ellenőrzést igényel.
Hogyan értékelhetem a ‘nehéz’ diákot, amelyek lassíthatják a renderelést vagy a PDF exportot?
Nincs egyetlen összetettségi tulajdonság. Járja be a Presentation.getSlides és minden dia IBaseSlide.getShapes kollekcióját. Használja a alakzatok számát és a nagy képek, effektusok, animációk vagy multimédia jelenlétét szűrési jelzőként, és végezzen egy reprezentatív renderelést vagy exportot, mielőtt a diát megerősített teljesítménybottlenecknek tekintené.