Hämta och uppdatera presentationsinformation i .NET
Översikt
Aspose.Slides kan identifiera ett presentationsformat och läsa dess dokumentmetadata utan att skapa ett komplett presentationsobjektmodell. Detta är användbart när du behöver klassificera filer, skapa ett register eller undersöka egenskaper innan du beslutar om du ska läsa in och bearbeta presentationsinnehållet.
Denna artikel visar lättviktig inspektion via PresentationFactory och IPresentationInfo, samt riktade uppdateringar via IDocumentProperties.
Kontrollera ett presentationsformat
Om du redan har en inläst presentation, se Bestäm det ursprungliga presentationsformatet 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 granska en fil utan att skapa en Presentation‑instans. Egenskapen IPresentationInfo.LoadFormat rapporterar det upptäckta formatet, t.ex. PPTX, PPT eller ODP.
using System;
using Aspose.Slides;
var fileNames = new[] { "pres.pptx", "pres.ppt", "pres.odp" };
foreach (var fileName in fileNames)
{
var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(fileName);
Console.WriteLine($"{fileName}: {presentationInfo.LoadFormat}");
}
Bygg ett lättviktigt presentationsregister
När du bearbetar många presentationsfiler kan du behöva ett kompakt register 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 ger följande registervärden:
| Egenskap | Registervärde |
|---|---|
| Slides | Totalt antal bilder. |
| HiddenSlides | Antal dolda bilder. |
| Notes | Antal bilder som innehåller anteckningar. |
| Paragraphs | Totalt antal stycken, när tillgängligt. |
| Words | Totalt antal ord. |
| MultimediaClips | Totalt antal ljud‑ och videoklipp. |
Följande exempel läser dessa värden utan att skapa ett Presentation‑objekt och skriver ut ett kompakt register. Det kombinerar även HeadingPairs med TitlesOfParts för att visa innehållsgrupper såsom teckensnitt, teman och bildtitlar.
using System;
using System.IO;
using Aspose.Slides;
var filePath = "sample.pptx";
var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(filePath);
var documentProperties = presentationInfo.ReadDocumentProperties();
Console.WriteLine($"File: {Path.GetFileName(filePath)}");
Console.WriteLine($"Format: {presentationInfo.LoadFormat}");
Console.WriteLine($"Title: {documentProperties.Title}");
Console.WriteLine($"Author: {documentProperties.Author}");
Console.WriteLine("Statistics:");
Console.WriteLine($" Slides: {documentProperties.Slides}");
Console.WriteLine($" Hidden slides: {documentProperties.HiddenSlides}");
Console.WriteLine($" Slides with notes: {documentProperties.Notes}");
Console.WriteLine($" Paragraphs: {documentProperties.Paragraphs}");
Console.WriteLine($" Words: {documentProperties.Words}");
Console.WriteLine($" Multimedia clips: {documentProperties.MultimediaClips}");
var headingPairs = documentProperties.HeadingPairs ?? Array.Empty<IHeadingPair>();
var titlesOfParts = documentProperties.TitlesOfParts ?? Array.Empty<string>();
var partIndex = 0;
if (headingPairs.Length == 0 || titlesOfParts.Length == 0)
{
Console.WriteLine("Content groups: not available");
}
else
{
Console.WriteLine("Content groups:");
foreach (var headingPair in headingPairs)
{
Console.WriteLine($" {headingPair.Name} ({headingPair.Count})");
for (var partOffset = 0; partOffset < headingPair.Count && partIndex < titlesOfParts.Length; partOffset++)
{
Console.WriteLine($" - {titlesOfParts[partIndex]}");
partIndex++;
}
}
if (partIndex < titlesOfParts.Length)
{
Console.WriteLine(" Other parts:");
while (partIndex < titlesOfParts.Length)
{
Console.WriteLine($" - {titlesOfParts[partIndex]}");
partIndex++;
}
}
}
Varje IHeadingPair levererar ett gruppnamn och antalet objekt i den gruppen. IDocumentProperties.TitlesOfParts är en platt, ordnad array, så konsumera antalet på varandra följande titlar som specificeras av varje rubrikpar.
Lagrade metadata och formatbegränsningar
De registeregenskaper som returneras av IPresentationInfo.ReadDocumentProperties återspeglar metadata som är tillgänglig i källdokumentet. Aspose.Slides läser inte in och traverserar 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 föråldrade om programmet som senast sparade filen inte uppdaterade dess dokumentegenskaper.
- PPTX: Formatet tillhandahåller utökade dokumentegenskaper för antal bilder, anteckningar, dolda bilder, stycken, 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 har uppdaterats av dokumentproducenten returnerar Aspose.Slides dess lagrade eller standardvärde istället för att beräkna det från bilderna.
- ODP: OpenDocument‑metadata ger allmänna dokumentstatistikvärden såsom sidantal, styckeantal 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 registeregenskaperna kan returnera standardvärden. Betrakta inte ett nollvärde eller en tom array som bevis på att motsvarande innehåll saknas.
Använd den lättviktiga metadata‑metoden för register och preliminära kontroller. Läs in 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
De egenskaper som returneras av IPresentationInfo.ReadDocumentProperties kan även förändras utan att skapa en Presentation‑instans. Applicera ändringarna med IPresentationInfo.UpdateDocumentProperties, och skriv sedan den bundna presentationen med IPresentationInfo.WriteBindedPresentation.
Följande bild visar de ursprungliga dokumentegenskaperna för PowerPoint‑presentationen.

Följande exempel ändrar titel och senast sparade tid och skriver resultatet till en ny fil:
using System;
using System.IO;
using Aspose.Slides;
var sourceFile = "sample.pptx";
var outputFile = "sample_with_updated_properties.pptx";
var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(sourceFile);
var documentProperties = presentationInfo.ReadDocumentProperties();
documentProperties.Title = "Quarterly sales report";
documentProperties.LastSavedTime = DateTime.UtcNow;
presentationInfo.UpdateDocumentProperties(documentProperties);
using var outputStream = File.Create(outputFile);
presentationInfo.WriteBindedPresentation(outputStream);
Följande bild visar de ändrade dokumentegenskaperna för PowerPoint‑presentationen.

Användbara länkar
För relaterade säkerhetskontroller och skyddsinställningar, se följande artiklar:
FAQ
Hur kan jag kontrollera om teckensnitt är inbäddade och vilka de är?
Läs in presentationen och använd Presentation.FontsManager. Anropa FontsManager.GetEmbeddedFonts för att erhålla de inbäddade teckensnitten och FontsManager.GetFonts för att få de teckensnitt som används av presentationen. Jämför de två resultaten för att hitta teckensnitt 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äses IDocumentProperties.HiddenSlides via PresentationFactory.GetPresentationInfo och IPresentationInfo.ReadDocumentProperties. Detta är lämpligt för ett lättviktigt register. Om presentationen har ändrats i minnet kan den lagrade metadata vara saknad eller föråldrad, eller så behöver du verifiera levande värden genom att iterera över Presentation.Slides och inspektera varje bilds Slide.Hidden‑egenskap istället.
Kan jag identifiera om anpassad bildstorlek och orientering används, och om de skiljer sig från standardinställningarna?
Ja. Läs in presentationen och läs Presentation.SlideSize. Inspektera ISlideSize.Type, ISlideSize.Size och ISlideSize.Orientation för att jämföra de aktuella inställningarna med förväntade förinställningar och dimensioner.
Finns det ett snabbt sätt att se om diagram refererar till externa datakällor?
Ja. Lokalisera varje Chart och inspektera ChartData.DataSourceType. För en extern arbetsbok, läs ChartData.ExternalWorkbookPath. Datakälltyp och -sökväg identifierar en extern referens, men att verifiera om målet är tillgängligt kräver en separat resurskontroll.
Hur kan jag bedöma “tunga” bilder som kan sakta ner rendering eller PDF‑export?
Det finns ingen enskild komplexitetsegenskap. Traversera Presentation.Slides och varje bilds IBaseSlide.Shapes‑samling. Använd antalet former samt närvaron av stora bilder, effekter, animationer eller multimedia som screeningssignaler, och mät en representativ rendering eller export innan du betraktar en bild som en bekräftad prestandaflaska.