Presentatie-informatie ophalen en bijwerken in .NET

Overzicht

Aspose.Slides kan het formaat van een presentatie identificeren en de documentmetadata lezen zonder een volledig presentatiemodel te maken. Dit is handig wanneer u bestanden moet classificeren, een inventaris moet opstellen of eigenschappen moet inspecteren voordat u beslist of u de presentatie‑inhoud wilt laden en verwerken.

Dit artikel toont lichtgewicht inspectie via PresentationFactory en IPresentationInfo, evenals gerichte updates via IDocumentProperties.

Controleer een Presentatieformaat

Als u al een geladen presentatie heeft, raadpleeg dan Bepaal het oorspronkelijke presentatiefomaat voor detectie na het laden en de beperkingen van oude PPT-, PPS- en POT‑stromen.

Gebruik PresentationFactory.GetPresentationInfo om een bestand te inspecteren zonder een Presentation instantie te maken. De eigenschap IPresentationInfo.LoadFormat geeft het gedetecteerde formaat weer, zoals PPTX, PPT of 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}");
}

Maak een Lichtgewicht Presentatie‑inventaris

Wanneer u veel presentatiebestanden verwerkt, kunt u een compacte inventaris nodig hebben voor validatie, indexering of een document‑beheersysteem. Gebruik in dit scenario PresentationFactory.GetPresentationInfo om een IPresentationInfo object te verkrijgen, en roep vervolgens IPresentationInfo.ReadDocumentProperties aan om de documentmetadata te lezen. Deze benadering maakt geen Presentation instantie aan en vereist niet dat u het volledige presentatiemodel doorloopt.

De uitgebreide eigenschappen die door IDocumentProperties worden aangeboden, leveren de volgende inventariswaarden:

Eigenschap Inventariswaarde
Slides Totaal aantal dia’s.
HiddenSlides Aantal verborgen dia’s.
Notes Aantal dia’s met notities.
Paragraphs Totaal aantal alinea’s, indien beschikbaar.
Words Totaal aantal woorden.
MultimediaClips Totaal aantal audio‑ en videoclips.

Het volgende voorbeeld leest deze waarden zonder een Presentation object te maken en drukt een compacte inventaris af. Het combineert ook HeadingPairs met TitlesOfParts om inhoudsgroepen zoals lettertypen, thema’s en dia‑titels weer te geven.

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++;
        }
    }
}

Elke IHeadingPair levert een groepsnaam en het aantal items in die groep. IDocumentProperties.TitlesOfParts is een plat, geordend array, dus consumeer het aantal opeenvolgende titels dat door elk heading‑pair wordt gespecificeerd.

Opgeslagen Metadata en Formaatbeperkingen

De inventaris‑eigenschappen die worden geretourneerd door IPresentationInfo.ReadDocumentProperties weerspiegelen de metadata die beschikbaar zijn in het bron‑document. Aspose.Slides laadt en doorloopt het presentatiemodel 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 heeft opgeslagen de documenteigenschappen niet heeft bijgewerkt.

  • PPTX: Het formaat biedt uitgebreide documenteigenschappen voor dia‑, notitie‑, verborgen‑dia‑, alinea‑, woord‑ en multimedia‑telling, evenals heading‑pairs en deel‑titels. Beschikbaarheid hangt af van welke eigenschappen door de documentproducent zijn geschreven.
  • PPT: Het binaire formaat kan overeenkomende document‑samenvattingseigenschappen opslaan. Als een eigenschap afwezig is 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, notitiedia’s, multimedia, heading‑pair en deel‑titel kan ontbreken, en de inventariseereigenschappen kunnen standaardwaarden retourneren. Beschouw een nul‑waarde of een lege array niet als overtuigend bewijs dat de corresponderende inhoud afwezig is.

Gebruik de lichtgewicht metadata‑benadering voor inventarissen en voorlopige controles. Laad de presentatie en inspecteer het live‑model wanneer het resultaat in‑memory wijzigingen moet weerspiegelen of wanneer u de daadwerkelijke presentatiewaarde moet verifiëren.

Werk Presentatie‑eigenschappen bij

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 gebonden presentatie met IPresentationInfo.WriteBindedPresentation.

De volgende afbeelding toont de originele documenteigenschappen van de PowerPoint‑presentatie.

Originele documenteigenschappen van de PowerPoint‑presentatie

Het volgende voorbeeld wijzigt de titel en de laatst‑opgeslagen tijd en schrijft het resultaat naar een nieuw bestand:

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);

De volgende afbeelding toont de bijgewerkte documenteigenschappen van de PowerPoint‑presentatie.

Bijgewerkte documenteigenschappen van de PowerPoint‑presentatie

Voor gerelateerde beveiligingscontroles en beschermingsinstellingen, zie de volgende artikelen:

FAQ

Hoe kan ik controleren of lettertypen zijn ingebed en welke dit zijn?

Laad de presentatie en gebruik Presentation.FontsManager. Roep FontsManager.GetEmbeddedFonts aan om de ingebedde lettertypen te verkrijgen en FontsManager.GetFonts om de door de presentatie gebruikte lettertypen te verkrijgen. Vergelijk de twee resultaten om lettertypen te vinden die nodig zijn voor weergave maar niet zijn ingebed.

Hoe kan ik snel zien of het bestand verborgen dia’s bevat en hoeveel?

Wanneer opgeslagen documentmetadata voldoende is, lees IDocumentProperties.HiddenSlides via PresentationFactory.GetPresentationInfo en IPresentationInfo.ReadDocumentProperties. Dit is geschikt voor een lichtgewicht inventaris. Als de presentatie in‑memory is gewijzigd, kan de opgeslagen metadata ontbreken of verouderd zijn, of moet u live‑waarden verifiëren door door Presentation.Slides te itereren en elke Slide.Hidden eigenschap te inspecteren.

Kan ik detecteren of een aangepaste dia‑grootte en -oriëntatie worden gebruikt, en of deze afwijken van de standaardinstellingen?

Ja. Laad de presentatie en lees Presentation.SlideSize. Inspecteer ISlideSize.Type, ISlideSize.Size en ISlideSize.Orientation om de huidige instellingen te vergelijken met de verwachte preset en afmetingen.

Is er een snelle manier om te zien of grafieken externe gegevensbronnen gebruiken?

Ja. Zoek elke Chart en inspecteer ChartData.DataSourceType. Voor een extern werkboek, lees ChartData.ExternalWorkbookPath. Het type gegevensbron en pad identificeren een externe verwijzing, maar verifiëren of het doel beschikbaar is vereist een afzonderlijke resource‑check.

Hoe kan ik ‘zware’ dia’s beoordelen die de weergave of PDF‑export kunnen vertragen?

Er bestaat geen enkele complexiteitseigenschap. Doorloop Presentation.Slides en elke IBaseSlide.Shapes collectie. Gebruik het aantal vormen en de aanwezigheid van grote afbeeldingen, effecten, animaties of multimedia als screeningssignalen, en meet een representatieve weergave of export voordat u een dia als een bevestigd prestatie‑knelpunt beschouwt.