Správa vlastností prezentace v .NET

Úvod

Aspose.Slides pro .NET podporuje vestavěné a vlastní vlastnosti dokumentu. Použijte tyto vlastnosti k načtení a aktualizaci metadat prezentace, jako je autor, název a uživatelem definované hodnoty.

Aspose.Slides vám umožňuje pracovat s vlastnostmi dokumentu prezentace prostřednictvím rozhraní IDocumentProperties . Instance tohoto rozhraní je vrácena pomocí IPresentation.DocumentProperties. Následující příklady ukazují, jak tyto vlastnosti číst, upravovat a spravovat.

Správa vlastností prezentace

Vlastnosti dokumentu ukládají popisné informace vedle obsahu prezentace. Rozdělují se do dvou kategorií:

  • Vestavěné vlastnosti obsahují standardní metadata, jako je název, autor a statistiky dokumentu.
  • Vlastní vlastnosti ukládají páry název/hodnota definované uživatelem.

Aspose.Slides pro .NET poskytuje přístup k oběma kategoriím. V PowerPointu vyberte File → Info → Properties → Advanced Properties pro prohlédnutí metadat dokumentu. Dialog seskupuje informace do záložek jako Summary, Statistics, Contents a Custom. Použijte záložku Custom pro správu uživatelem definovaných vlastností.

Čtení veřejných vlastností z šifrované prezentace

Cílové heslo obvykle chrání jak obsah prezentace, tak vlastnosti dokumentu. Když je prezentace šifrována pomocí IProtectionManager.EncryptDocumentProperties nastaveného na false, zůstávají její vlastnosti dokumentu veřejné. Aplikace pak může nastavit LoadOptions.OnlyLoadDocumentProperties na true a číst veřejná metadata bez zadání otevíracího hesla.

LoadOptions.OnlyLoadDocumentProperties řídí, co Aspose.Slides načítá; neprovádí žádné dešifrování. Pokud byly vlastnosti zahrnuty do šifrování, načtení bez hesla selže. Pokud prezentace není šifrována, volba se ignoruje a načte se celá prezentace.

Příklad vyžaduje šifrovanou prezentaci, jejíž vlastnosti dokumentu byly ponechány veřejné. Ověřuje režim načítání pomocí IProtectionManager.IsOnlyDocumentPropertiesLoaded a poté čte vestavěné vlastnosti pomocí 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.");
}

V tomto režimu se nenačítá obsah snímků. Snímky, předlohy, rozvržení, tvary, média a další objekty prezentace nejsou k dispozici. Aplikace by měly vždy zkontrolovat IProtectionManager.IsOnlyDocumentPropertiesLoaded, než provádějí operaci vyžadující kompletní model objektů prezentace.

Aktualizace vlastností šifrované prezentace

Pro šifrovaný soubor PPTX je prezentace načtená pomocí LoadOptions.OnlyLoadDocumentProperties určena pro čtení veřejných metadat. Aspose.Slides nemůže uložit změněné vlastnosti z tohoto objektu obsahujícího pouze metadata, protože veřejné vlastnosti musí zůstat v souladu s odpovídajícími daty uvnitř šifrované prezentace. Aktualizace tedy vyžaduje správné otevírací heslo a úplné načtení.

Příklad vyžaduje šifrovanou PPTX prezentaci s veřejnými vlastnostmi dokumentu a známým otevíracím heslem. Otevře kompletní prezentaci pomocí LoadOptions.Password, aktualizuje veřejné vestavěné vlastnosti a uloží výsledek. Poté použije IPresentationInfo.IsEncrypted , aby ověřil, že šifrování bylo zachováno, a znovu otevře veřejná metadata bez hesla pro ověření nových hodnot:

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.");
}

Pokud aplikace není oprávněna dešifrovat nebo načíst obsah prezentace, musí veřejné vlastnosti šifrovaného souboru PPTX považovat za pouze ke čtení.

Přístup k vestavěným vlastnostem

Rozhraní IDocumentProperties poskytuje vestavěná metadata prostřednictvím typovaných vlastností, včetně Author, Title, a CreatedTime. Tento příklad otevře existující prezentaci a vypíše její uložená metadata do konzole. Hodnoty závisí na vstupní prezentaci; některá pole mohou být prázdná.

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

Úprava vestavěných vlastností

Pro aktualizaci vestavěných metadat přiřaďte hodnoty zapisovatelným vlastnostem poskytovaným prostřednictvím IPresentation.DocumentProperties. Tento příklad otevře existující prezentaci, nastaví Author, Title, Subject, Comments, a Manager, poté uloží aktualizovanou prezentaci pomocí Presentation.Save. Uložený PPTX obsahuje nová 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);

Správa základní adresy hypertextových odkazů

IDocumentProperties.HyperlinkBase ukládá úroveň dokumentu jako základ pro relativní hypertextové odkazy. To je užitečné při přesunu prezentace a souvisejících souborů na jiné místo. Je oddělený od individuálního odkazu IHyperlink.ExternalUrl: změna základu nepřepíše uložené adresy odkazů ani nezmění absolutní cíle.

Příklad vyžaduje prezentaci obsahující jak relativní odkaz, například target.html, tak absolutní odkaz, například https://example.org/absolute.html. Načte existující základ, přiřadí novou základní adresu a uloží a znovu otevře prezentaci pro kontrolu hodnoty. Poté vymaže základ pomocí string.Empty a ověří prázdnou hodnotu v samostatném uloženém souboru. Nahraďte ukázkovou základní adresu umístěním vašich odkazovaných souborů.

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

Dvě ověřovací zprávy by měly vypsat True. Vymazání základu ponechá jednotlivé adresy hypertextových odkazů nedotčeny.

Relativní odkaz na target.pptx otevřel old/target.pptx, když základ ukazoval na složku old. Po změně základu na složku new, uložení a znovu otevření prezentace otevřel stejný odkaz new/target.pptx. Absolutní odkaz nadále otevíral stejný soubor. Otestujte své relativní odkazy v PowerPointu před a po přesunu prezentace nebo změně jejího základu.

Přidání vlastních vlastností prezentace

Vlastní vlastnosti ukládají metadata, která nemají odpovídající vestavěné pole. IDocumentProperties indexer vám umožňuje přiřadit hodnotu podle názvu vlastnosti. Tento příklad vytvoří prezentaci, přidá dva textové hodnoty a celočíselnou verzi a uloží prezentaci pomocí Presentation.Save. Přiřazení hodnoty k existujícímu názvu nahradí hodnotu této vlastnosti.

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

Přístup a úprava vlastních vlastností

Tento příklad otevře prezentaci obsahující vlastní vlastnosti a použije CountOfCustomProperties , aby je iteroval. GetCustomPropertyName přijímá index od nuly a vrací název použitý IDocumentProperties indexer. Příklad vytiskne každý původní název a hodnotu, nahradí každou hodnotu číslovaným řetězcem bez ohledu na původní typ a uloží změny. Pokud neexistují žádné vlastní vlastnosti, smyčka neprovede žádné změny.

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

Ukázkový příklad

Vyzkoušejte online aplikaci Zobrazit a upravit metadata PowerPoint, abyste viděli, jak pracovat s vlastnostmi dokumentu pomocí API Aspose.Slides:

Zobrazit a upravit metadata PowerPoint

Často kladené otázky

Jak mohu odstranit vestavěnou vlastnost z prezentace?

Vestavěné vlastnosti jsou nedílnou součástí prezentace a nelze je úplně odstranit. Můžete však změnit jejich hodnoty nebo je nastavit na prázdné, pokud to konkrétní vlastnost umožňuje.

Co se stane, když přidám vlastní vlastnost, která již existuje?

Pokud přidáte vlastní vlastnost, která již existuje, její stávající hodnota bude přepsána novou. Nemusíte vlastnost předtím odstraňovat nebo kontrolovat, protože Aspose.Slides automaticky aktualizuje její hodnotu.

Mohu získat přístup k vlastnostem prezentace bez úplného načtení prezentace?

Ano. Použijte PresentationFactory.GetPresentationInfo a poté IPresentationInfo.ReadDocumentProperties, abyste načetli uložená metadata dokumentu, aniž byste vytvářeli instanci Presentation. Viz Build a Lightweight Presentation Inventory pro kompletní ukázku reportování a omezení specifická pro formát.

Mohu číst veřejné vlastnosti šifrované prezentace bez otevíracího hesla?

Ano. Prezentace musí být šifrována pomocí IProtectionManager.EncryptDocumentProperties nastaveného na false a musí být načtena s LoadOptions.OnlyLoadDocumentProperties nastaveným na true.

Mohu aktualizovat šifrovaný soubor PPTX v režimu pouze vlastnosti dokumentu?

Ne. Veřejná a šifrovaná data vlastností musí zůstat konzistentní, takže aktualizace šifrovaného souboru PPTX vyžaduje načtení kompletní prezentace se správným otevíracím heslem.