Hämta och uppdatera presentationsinformation i Java
Översikt
Aspose.Slides kan identifiera ett presentationsformat och läsa dess dokumentmetadata utan att skapa en komplett presentationsobjektmodell. Detta är användbart när du behöver klassificera filer, bygga ett inventarium eller undersöka egenskaper innan du bestämmer dig för att ladda och bearbeta presentationsinnehållet.
Denna artikel demonstrerar lättviktig inspektion via PresentationFactory och IPresentationInfo, samt riktade uppdateringar via IDocumentProperties.
Kontrollera ett presentationsformat
Om du redan har en laddad presentation, se Determine the Original Presentation Format för detektering efter inläsning och begränsningarna för äldre PPT‑, PPS‑ och POT‑strömmar.
Använd PresentationFactory.getPresentationInfo för att inspektera en fil utan att skapa en Presentation‑instans. Metoden IPresentationInfo.getLoadFormat rapporterar det upptäckta formatet, såsom PPTX, PPT eller 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);
}
Bygg ett lättviktigt presentationsinventarium
När du bearbetar många presentationsfiler kan du behöva ett kompakt inventarium för validering, indexering eller ett dokumenthanteringssystem. I detta scenario, använd PresentationFactory.getPresentationInfo för att erhålla ett IPresentationInfo‑objekt, och anropa sedan IPresentationInfo.readDocumentProperties för att läsa dokumentmetadata. Detta tillvägagångssätt skapar ingen Presentation‑instans och kräver inte att du traverserar hela presentationsobjektmodellen.
De utökade egenskaperna som exponeras av IDocumentProperties tillhandahåller följande inventarievärden:
| Metod | Inventarievärde |
|---|---|
| getSlides | Totalt antal bilder. |
| getHiddenSlides | Antal dolda bilder. |
| getNotes | Antal bilder som innehåller anteckningar. |
| getParagraphs | Totalt antal stycken, när tillgängligt. |
| getWords | Totalt antal ord. |
| getMultimediaClips | Totalt antal ljud‑ och videoklipp. |
Följande exempel läser dessa värden utan att skapa ett Presentation‑objekt och skriver ut ett kompakt inventarium. Det kombinerar också getHeadingPairs med getTitlesOfParts för att visa innehållsgrupper såsom teckensnitt, teman och bildtitlar.
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++;
}
}
}
Varje IHeadingPair tillhandahåller ett gruppnamn och antalet objekt i den gruppen. IDocumentProperties.getTitlesOfParts returnerar en platt, ordnad array, så konsumera antalet på varandra följande titlar som anges av varje rubrikpar.
Lagrad metadata och formatbegränsningar
De inventarieegenskaper som returneras av IPresentationInfo.readDocumentProperties speglar metadata som finns i källdokumentet. Aspose.Slides laddar och traverserar inte presentationsobjektmodellen för att omräkna dessa värden för detta anrop. Saknade egenskaper representeras av standardvärden, och lagrade värden kan vara utdaterade om programmet som senast sparade filen inte uppdaterade dess dokumentegenskaper.
- PPTX: Formatet tillhandahåller utökade dokumentegenskaper för räknare av bild, anteckning, dold bild, stycke, ord och multimedia, samt rubrikpar och deltitlar. Tillgängligheten beror på vilka egenskaper som skrevs av dokumentproducenten.
- PPT: Det binära formatet kan lagra motsvarande dokument‑sammanfattningsegenskaper. Om en egenskap saknas eller inte uppdaterades av dokumentproducenten returnerar Aspose.Slides dess lagrade eller standardvärde istället för att beräkna det från bilderna.
- ODP: OpenDocument‑metadata tillhandahåller allmänna dokumentstatistik, såsom sid‑, stycke‑ och ordantal, men dessa värden motsvarar inte alla PowerPoint‑specifika utökade egenskaper. Metadata för dolda bilder, anteckningsbilder, multimedia, rubrikpar och deltitlar kan vara otillgängliga, och inventarieegenskaperna kan returnera standardvärden. Behandla inte ett nollvärde eller en tom array som ett auktoritativt bevis på att motsvarande innehåll saknas.
Använd den lättviktiga metadata‑metoden för inventarier och preliminära kontroller. Ladda presentationen och inspektera dess levande objektmodell när resultatet måste återspegla förändringar i minnet eller när du behöver verifiera det faktiska presentationsinnehållet.
Uppdatera presentationsegenskaper
Egenskaperna som returneras av IPresentationInfo.readDocumentProperties kan också ändras utan att skapa en Presentation‑instans. Applicera ändringarna med IPresentationInfo.updateDocumentProperties, och skriv sedan den bundna presentationen med IPresentationInfo.writeBindedPresentation.
Bilden nedan visar de ursprungliga dokumentegenskaperna för PowerPoint‑presentationen.

Följande exempel ändrar titel och senast sparade tid och skriver resultatet till en ny fil:
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);
}
Bilden nedan visar de uppdaterade dokumentegenskaperna för PowerPoint‑presentationen.

Användbara länkar
För relaterade säkerhetskontroller och skyddsinställningar, se följande artiklar:
Vanliga frågor
Hur kan jag kontrollera om typsnitt är inbäddade och vilka de är?
Ladda presentationen och använd Presentation.getFontsManager. Anropa IFontsManager.getEmbeddedFonts för att erhålla de inbäddade typsnitten och IFontsManager.getFonts för att få de typsnitt som används av presentationen. Jämför de två resultaten för att hitta typsnitt som krävs för rendering men som inte är inbäddade.
Hur kan jag snabbt avgöra om filen har dolda bilder och hur många?
När lagrad dokumentmetadata är tillräcklig, läs IDocumentProperties.getHiddenSlides via PresentationFactory.getPresentationInfo och IPresentationInfo.readDocumentProperties. Detta är lämpligt för ett lättviktigt inventarium. Om presentationen har modifierats i minnet, kan den lagrade metadatan saknas eller vara utdaterad, eller du behöver verifiera levande värden genom att iterera över Presentation.getSlides och inspektera varje bilds ISlide.getHidden‑metod istället.
Kan jag upptäcka om en anpassad bildstorlek och orientering används, och om de avviker från standardinställningarna?
Ja. Ladda presentationen och anropa Presentation.getSlideSize. Använd ISlideSize.getType, ISlideSize.getSize och ISlideSize.getOrientation för att jämföra de aktuella inställningarna med de förväntade förinställningarna och dimensionerna.
Finns det ett snabbt sätt att se om diagram refererar till externa datakällor?
Ja. Lokalisera varje Chart och anropa IChartData.getDataSourceType. För en extern arbetsbok, anropa IChartData.getExternalWorkbookPath. Datakälltypen och sökvägen identifierar en extern referens, men att verifiera om målet är tillgängligt kräver en separat resurstest.
Hur kan jag bedöma ”tunga” bilder som kan sakta renderingen eller PDF‑export?
Det finns ingen enskild komplexitetsegenskap. Traversera Presentation.getSlides och varje bilds IBaseSlide.getShapes‑samling. Använd antal former samt förekomsten av stora bilder, effekter, animationer eller multimedia som screening‑signaler, och mät en representativ rendering eller export innan du behandlar en bild som en bekräftad prestandaflaskhals.