Presentatie-informatie ophalen en bijwerken in Java
Overzicht
Aspose.Slides kan het formaat van een presentatie identificeren en de documentmetadata lezen zonder een compleet presentatie‑objectmodel te maken. Dit is handig wanneer u bestanden moet classificeren, een inventaris moet opstellen of eigenschappen wilt inspecteren voordat u beslist of u de inhoud van de presentatie wilt laden en verwerken.
Dit artikel demonstreert een lichte inspectie via PresentationFactory en IPresentationInfo, evenals gerichte updates via IDocumentProperties.
Controleren van een Presentatieformaat
Als u al een geladen presentatie hebt, zie Bepalen van het oorspronkelijke presentatieformaat voor detectie na het laden en de beperkingen van legacy PPT-, PPS- en POT‑streams.
Gebruik PresentationFactory.getPresentationInfo om een bestand te inspecteren zonder een Presentation instantie te maken. De IPresentationInfo.getLoadFormat methode geeft het gedetecteerde formaat terug, zoals PPTX, PPT of 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);
}
Een lichtgewicht presentatie‑inventaris opbouwen
Wanneer u veel presentatie‑bestanden verwerkt, heeft u mogelijk een compacte inventaris nodig voor validatie, indexering of een document‑beheersysteem. In dit scenario gebruikt u PresentationFactory.getPresentationInfo om een IPresentationInfo‑object te verkrijgen, en daarna roept u IPresentationInfo.readDocumentProperties aan om de documentmetadata te lezen. Deze aanpak maakt geen Presentation instantie aan en vereist niet dat u het volledige presentatie‑objectmodel doorloopt.
De uitgebreide eigenschappen die door IDocumentProperties worden aangeboden, leveren de volgende inventariswaarden:
| Methode | Inventariswaarde |
|---|---|
| getSlides | Totaal aantal dia’s. |
| getHiddenSlides | Aantal verborgen dia’s. |
| getNotes | Aantal dia’s met notities. |
| getParagraphs | Totaal aantal alinea’s, indien beschikbaar. |
| getWords | Totaal aantal woorden. |
| getMultimediaClips | Totaal aantal audio‑ en video‑clips. |
Het volgende voorbeeld leest deze waarden zonder een Presentation object te maken en drukt een compacte inventaris af. Het combineert bovendien getHeadingPairs met getTitlesOfParts om inhoudsgroepen weer te geven zoals lettertypen, thema’s en diatitels.
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++;
}
}
}
Elke IHeadingPair levert een groepsnaam en het aantal items in die groep. IDocumentProperties.getTitlesOfParts retourneert een vlak, geordend array, dus gebruik het aantal opeenvolgende titels dat door elk heading‑pair wordt opgegeven.
Opgeslagen metadata en formaatbeperkingen
De inventaris‑eigenschappen die worden geretourneerd door IPresentationInfo.readDocumentProperties weerspiegelen de metadata die beschikbaar is in het bron‑document. Aspose.Slides laadt en doorloopt het presentatie‑objectmodel niet om deze waarden voor deze oproep opnieuw te berekenen. Ontbrekende eigenschappen worden weergegeven met standaardwaarden, en opgeslagen waarden kunnen verouderd zijn als de applicatie die het bestand het laatst opsloeg de documenteigenschappen niet bijwerkte.
- PPTX: Het formaat biedt uitgebreide documenteigenschappen voor tellingen van dia’s, notities, verborgen dia’s, alinea’s, woorden en multimedia, evenals heading‑pairs en part‑titles. Beschikbaarheid hangt af van welke eigenschappen zijn geschreven door de documentproducent.
- PPT: Het binaire formaat kan overeenkomstige document‑samenvattings‑eigenschappen opslaan. Als een eigenschap ontbreekt of niet is ververst door de documentproducent, retourneert Aspose.Slides de opgeslagen of standaardwaarde in plaats van deze te berekenen vanuit de dia’s.
- ODP: OpenDocument‑metadata biedt algemene documentstatistieken, zoals pagina‑, alinea‑ en woordtelling, maar deze waarden komen niet overeen met elke PowerPoint‑specifieke uitgebreide eigenschap. Metadata voor verborgen dia’s, notities, multimedia, heading‑pairs en part‑titles kan ontbreken, en de inventaris‑eigenschappen kunnen standaardwaarden retourneren. Beschouw een nulwaarde of een leeg array niet als sluitend bewijs dat de bijbehorende inhoud afwezig is.
Gebruik de lichte metadata‑aanpak voor inventarissen en voorlopige controles. Laad de presentatie en inspecteer het live‑objectmodel wanneer het resultaat moet weerspiegelen wat er in het geheugen is gewijzigd of wanneer u de daadwerkelijke presentatie‑inhoud moet verifiëren.
Presentatie‑eigenschappen bijwerken
De eigenschappen die worden geretourneerd door IPresentationInfo.readDocumentProperties kunnen ook worden gewijzigd zonder een Presentation instantie te maken. Pas de wijzigingen toe met IPresentationInfo.updateDocumentProperties, en schrijf vervolgens de gekoppelde presentatie weg met IPresentationInfo.writeBindedPresentation.
De volgende afbeelding toont de oorspronkelijke documenteigenschappen.

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);
}
De volgende afbeelding toont de bijgewerkte documenteigenschappen.

Handige Links
Voor gerelateerde beveiligingscontroles en beschermingsinstellingen, zie de volgende artikelen:
FAQ
Hoe kan ik controleren of lettertypen zijn ingesloten en welke dat zijn?
Laad de presentatie en gebruik Presentation.getFontsManager. Roep IFontsManager.getEmbeddedFonts aan om de ingesloten lettertypen te verkrijgen en IFontsManager.getFonts om de door de presentatie gebruikte lettertypen te verkrijgen. Vergelijk de twee resultaten om lettertypen te vinden die nodig zijn voor het renderen maar niet zijn ingesloten.
Hoe kan ik snel zien of het bestand verborgen dia’s bevat en hoeveel het er zijn?
Wanneer opgeslagen documentmetadata voldoende is, lees IDocumentProperties.getHiddenSlides via PresentationFactory.getPresentationInfo en IPresentationInfo.readDocumentProperties. Dit is geschikt voor een lichte inventaris. Als de presentatie in het geheugen is gewijzigd, kan de opgeslagen metadata ontbreken of verouderd zijn, of moet u de live‑waarden verifiëren; doorloop dan Presentation.getSlides en inspecteer voor elke dia de ISlide.getHidden methode.
Kan ik detecteren of een aangepaste dia‑grootte en -oriëntatie worden gebruikt, en of ze verschillen van de standaardinstellingen?
Ja. Laad de presentatie en roep Presentation.getSlideSize aan. Gebruik ISlideSize.getType, ISlideSize.getSize en ISlideSize.getOrientation om de huidige instellingen te vergelijken met de verwachte vooraf ingestelde waarden en afmetingen.
Is er een snelle manier om te zien of grafieken verwijzen naar externe gegevensbronnen?
Ja. Zoek elke Chart en roep IChartData.getDataSourceType aan. Voor een externe werkmap roep je IChartData.getExternalWorkbookPath aan. Het type gegevensbron en het pad identificeren een externe referentie, maar om te verifiëren of het doel beschikbaar is, is een aparte resource‑check nodig.
Hoe kan ik ‘zware’ dia’s beoordelen die de weergave of PDF‑export kunnen vertragen?
Er bestaat geen enkele complexiteits‑eigenschap. Doorloop Presentation.getSlides en voor elke dia de IBaseSlide.getShapes collectie. Gebruik het aantal vormen en de aanwezigheid van grote afbeeldingen, effecten, animaties of multimedia als indicatie, en meet een representatieve weergave of export voordat u een dia als een bevestigd prestatie‑knelpunt behandelt.