Hantera presentationsegenskaper i .NET

Introduktion

Aspose.Slides för .NET stöder inbyggda och anpassade dokumentegenskaper. Använd dessa egenskaper för att läsa och uppdatera presentationsmetadata, såsom författare, titel och användardefinierade värden.

Aspose.Slides låter dig arbeta med presentationsdokumentegenskaper via gränssnittet IDocumentProperties . En instans av detta gränssnitt returneras av IPresentation.DocumentProperties. Följande exempel visar hur man läser, ändrar och hanterar dessa egenskaper.

Hantera presentationsegenskaper

Dokumentegenskaper lagrar beskrivande information tillsammans med presentationsinnehållet. De delas in i två kategorier:

  • Inbyggda egenskaper innehåller standardmetadata, såsom titel, författare och dokumentstatistik.
  • Anpassade egenskaper lagrar användardefinierade namn/värde-par.

Aspose.Slides för .NET ger åtkomst till båda kategorierna. I PowerPoint, välj File → Info → Properties → Advanced Properties för att inspektera dokumentmetadata. Dialogrutan grupperar information i flikar såsom Sammanfattning, Statistik, Innehåll och Anpassade. Använd fliken Anpassade för att hantera användardefinierade egenskaper.

Läs offentliga egenskaper från en krypterad presentation

Ett öppningslösenord skyddar normalt både presentationsinnehållet och dokumentegenskaperna. När en presentation är krypterad med IProtectionManager.EncryptDocumentProperties satt till false, förblir dess dokumentegenskaper offentliga. En applikation kan då sätta LoadOptions.OnlyLoadDocumentProperties till true och läsa den offentliga metadata utan att ange öppningslösenordet.

LoadOptions.OnlyLoadDocumentProperties styr vad Aspose.Slides laddar; den dekrypterar inte något. Om egenskaperna inkluderas i krypteringen misslyckas laddning utan lösenord. Om presentationen inte är krypterad ignoreras alternativet och hela presentationen laddas.

Exemplet kräver en krypterad presentation vars dokumentegenskaper lämnades offentliga. Det verifierar laddningsläget via IProtectionManager.IsOnlyDocumentPropertiesLoaded och läser sedan inbyggda egenskaper via IPresentation.DocumentProperties:

using System;
using Aspose.Slides;

var loadOptions = new LoadOptions { OnlyLoadDocumentProperties = true };
using var presentation = new Presentation("public-properties-encrypted.pptx", loadOptions);

if (presentation.ProtectionManager.IsOnlyDocumentPropertiesLoaded)
{
    var documentProperties = presentation.DocumentProperties;

    Console.WriteLine("Author: " + documentProperties.Author);
    Console.WriteLine("Title: " + documentProperties.Title);
    Console.WriteLine("Keywords: " + documentProperties.Keywords);
}
else
{
    Console.WriteLine("The presentation was not loaded in document-properties-only mode.");
}

I detta läge laddas inte bildinnehållet. Bildspel, masterbilder, layouter, former, media och andra presentationsobjekt är otillgängliga. Applikationer bör alltid kontrollera IProtectionManager.IsOnlyDocumentPropertiesLoaded innan en operation som kräver hela presentationsobjektmodellen utförs.

Uppdatera egenskaper för en krypterad presentation

För en krypterad PPTX‑fil är en presentation som laddas med LoadOptions.OnlyLoadDocumentProperties avsedd för att läsa offentlig metadata. Aspose.Slides kan inte spara ändrade egenskaper från det objektet som endast innehåller metadata eftersom de offentliga egenskaperna måste vara konsistenta med motsvarande data i den krypterade presentationen. Att uppdatera dem kräver därför korrekt öppningslösenord och en fullständig laddning.

Exemplet kräver en krypterad PPTX‑presentation med offentliga dokumentegenskaper och ett känt öppningslösenord. Det öppnar hela presentationen med LoadOptions.Password, uppdaterar offentliga inbyggda egenskaper och sparar resultatet. Därefter används IPresentationInfo.IsEncrypted för att verifiera att krypteringen bevaras och den offentliga metadata öppnas igen utan lösenord för att kontrollera de nya värdena:

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

const string inputPath = "public-properties-encrypted.pptx";
const string outputPath = "updated-public-properties-encrypted.pptx";

var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation(inputPath, loadOptions);

var documentProperties = presentation.DocumentProperties;
documentProperties.Title = "Updated Product Roadmap";
documentProperties.Keywords = "roadmap, planning, indexed";

presentation.Save(outputPath, SaveFormat.Pptx);

var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(outputPath);
Console.WriteLine("The presentation is encrypted: " + presentationInfo.IsEncrypted);

var metadataLoadOptions = new LoadOptions { OnlyLoadDocumentProperties = true };
using var metadataPresentation = new Presentation(outputPath, metadataLoadOptions);

if (metadataPresentation.ProtectionManager.IsOnlyDocumentPropertiesLoaded)
{
    Console.WriteLine("Title: " + metadataPresentation.DocumentProperties.Title);
    Console.WriteLine("Keywords: " + metadataPresentation.DocumentProperties.Keywords);
}
else
{
    Console.WriteLine("The presentation was not loaded in document-properties-only mode.");
}

Om en applikation inte får dekryptera eller ladda presentationsinnehållet måste den behandla offentliga egenskaper i en krypterad PPTX‑fil som skrivskyddade.

Åtkomst till inbyggda egenskaper

IDocumentProperties‑gränssnittet exponerar inbyggd metadata via typade egenskaper, inklusive Author, Title och CreatedTime. Detta exempel öppnar en befintlig presentation och skriver ut dess lagrade metadata till konsolen. Värdena beror på den inlästa presentationen; vissa fält kan vara tomma.

using System;
using Aspose.Slides;

using var presentation = new Presentation("AccessBuiltInProperties.pptx");

var documentProperties = presentation.DocumentProperties;

Console.WriteLine("Category: " + documentProperties.Category);
Console.WriteLine("Content status: " + documentProperties.ContentStatus);
Console.WriteLine("Creation date: " + documentProperties.CreatedTime);
Console.WriteLine("Author: " + documentProperties.Author);
Console.WriteLine("Comments: " + documentProperties.Comments);
Console.WriteLine("Keywords: " + documentProperties.Keywords);
Console.WriteLine("Last modified by: " + documentProperties.LastSavedBy);
Console.WriteLine("Manager: " + documentProperties.Manager);
Console.WriteLine("Modified date: " + documentProperties.LastSavedTime);
Console.WriteLine("Presentation format: " + documentProperties.PresentationFormat);
Console.WriteLine("Last print date: " + documentProperties.LastPrinted);
Console.WriteLine("Is shared between producers: " + documentProperties.SharedDoc);
Console.WriteLine("Subject: " + documentProperties.Subject);
Console.WriteLine("Title: " + documentProperties.Title);

Modifiera inbyggda egenskaper

För att uppdatera inbyggd metadata, tilldela värden till de skrivbara egenskaper som exponeras av IPresentation.DocumentProperties. Detta exempel öppnar en befintlig presentation, sätter Author, Title, Subject, Comments och Manager, och sparar den uppdaterade presentationen med Presentation.Save. Den sparade PPTX‑filen innehåller den nya metadata.

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("ModifyBuiltInProperties.pptx");

var documentProperties = presentation.DocumentProperties;

documentProperties.Author = "Aspose.Slides for .NET";
documentProperties.Title = "Manage PowerPoint Presentation Properties";
documentProperties.Subject = "Modify Built-in Properties";
documentProperties.Comments = "Aspose description";
documentProperties.Manager = "Aspose manager";

presentation.Save("DocumentProperties_output.pptx", SaveFormat.Pptx);

Hantera hyperlänkbasen

IDocumentProperties.HyperlinkBase lagrar den dokumentnivåbas för relativa hyperlänkar. Detta är användbart när en presentation och dess länkade filer flyttas till en annan plats. Det är separat från enskilda hyperlänks IHyperlink.ExternalUrl: att ändra basen skriver inte om de lagrade länpadresserna eller ändrar absoluta destinationer.

Exemplet kräver en presentation som innehåller både en relativ länk, exempelvis target.html, och en absolut länk, exempelvis https://example.org/absolute.html. Det läser den befintliga basen, tilldelar en ny basadress och sparar samt öppnar presentationen igen för att kontrollera värdet. Därefter rensas basen med string.Empty och det tomma värdet verifieras i en separat sparad fil. Ersätt exempelbasadressen med platsen för dina länkade filer.

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("hyperlinks.pptx");
Console.WriteLine("Original base: " + presentation.DocumentProperties.HyperlinkBase);

const string newBase = "https://example.com/new/";
presentation.DocumentProperties.HyperlinkBase = newBase;
presentation.Save("hyperlinks-updated.pptx", SaveFormat.Pptx);

using var updatedPresentation = new Presentation("hyperlinks-updated.pptx");
Console.WriteLine("Base preserved: " + (updatedPresentation.DocumentProperties.HyperlinkBase == newBase));

updatedPresentation.DocumentProperties.HyperlinkBase = string.Empty;
updatedPresentation.Save("hyperlinks-cleared.pptx", SaveFormat.Pptx);

using var clearedPresentation = new Presentation("hyperlinks-cleared.pptx");
Console.WriteLine("Base cleared: " + (clearedPresentation.DocumentProperties.HyperlinkBase == string.Empty));

De två verifieringsmeddelandena bör skriva ut True. Att rensa basen lämnar de enskilda hyperlänkadresserna intakta.

En relativ länk till target.pptx öppnade old/target.pptx när basen pekade på mappen old. Efter att basen ändrades till mappen new, sparades och öppnades presentationen igen, och samma länk öppnade new/target.pptx. En absolut länk fortsatte att öppna samma fil. Testa dina relativa länkar i PowerPoint före och efter att du flyttar presentationen eller ändrar dess bas.

Lägg till anpassade presentationsegenskaper

Anpassade egenskaper lagrar metadata som inte har motsvarande inbyggt fält. IDocumentProperties indexer låter dig tilldela ett värde per egenskapsnamn. Detta exempel skapar en presentation, lägger till två textvärden och ett heltalsversionsvärde, och sparar presentationen med Presentation.Save. Att tilldela ett värde till ett befintligt namn ersätter den egenskapens tidigare värde.

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation();

var documentProperties = presentation.DocumentProperties;

documentProperties["Reviewed by"] = "John Smith";
documentProperties["Confidentiality level"] = "Internal";
documentProperties["Document version"] = 2;

presentation.Save("CustomDocumentProperties_output.pptx", SaveFormat.Pptx);

Åtkomst till och modifiera anpassade egenskaper

Detta exempel öppnar en presentation som innehåller anpassade egenskaper och använder CountOfCustomProperties för att iterera över dem. GetCustomPropertyName accepterar ett nollbaserat index och returnerar namnet som används av IDocumentProperties indexer. Exemplet skriver ut varje ursprungligt namn och värde, ersätter varje värde med en numrerad sträng oavsett ursprungstyp, och sparar ändringarna. Om det inte finns några anpassade egenskaper gör loopen inga förändringar.

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("AccessAndModifyProperties.pptx");

var documentProperties = presentation.DocumentProperties;

for (var i = 0; i < documentProperties.CountOfCustomProperties; i++)
{
    var propertyName = documentProperties.GetCustomPropertyName(i);
    var propertyValue = documentProperties[propertyName];

    Console.WriteLine("Custom property name: " + propertyName);
    Console.WriteLine("Custom property value: " + propertyValue);

    documentProperties[propertyName] = "New Value " + (i + 1);
}

presentation.Save("CustomProperties_output.pptx", SaveFormat.Pptx);

Live-exempel

Prova den Visa och redigera PowerPoint-metadata online‑appen för att se hur du arbetar med dokumentegenskaper med Aspose.Slides API:

Visa och redigera PowerPoint-metadata

FAQ

Hur kan jag ta bort en inbyggd egenskap från en presentation?

Inbyggda egenskaper är en integrerad del av presentationen och kan inte tas bort helt. Du kan dock antingen ändra deras värden eller sätta dem till tomma om den specifika egenskapen tillåter det.

Vad händer om jag lägger till en anpassad egenskap som redan finns?

Om du lägger till en anpassad egenskap som redan finns, kommer dess befintliga värde att skrivas över med det nya. Du behöver inte ta bort eller kontrollera egenskapen i förväg, eftersom Aspose.Slides automatiskt uppdaterar egenskapens värde.

Kan jag komma åt presentationsegenskaper utan att ladda hela presentationen?

Ja. Använd PresentationFactory.GetPresentationInfo och sedan IPresentationInfo.ReadDocumentProperties för att läsa lagrad dokumentmetadata utan att skapa en Presentation‑instans. Se Bygg ett lättviktigt presentationsinventarium för ett komplett rapportexempel och format‑specifika begränsningar.

Kan jag läsa offentliga egenskaper i en krypterad presentation utan dess öppningslösenord?

Ja. Presentationen måste ha krypterats med IProtectionManager.EncryptDocumentProperties satt till false, och den måste laddas med LoadOptions.OnlyLoadDocumentProperties satt till true.

Kan jag uppdatera en krypterad PPTX‑fil i läge som endast laddar dokumentegenskaper?

Nej. Offentlig och krypterad egendomsdata måste förbli konsekventa, så att uppdatera en krypterad PPTX‑fil kräver att hela presentationen laddas med korrekt öppningslösenord.