Extract Metadata

This demo uses the DevExpress Presentation API to extract presentation metadata. You can use the predefined sample file or upload your own presentation. To do the latter, select Upload a File in the file selection drop-down menu.

Check the required boxes to specify the metadata types to extract. Click Extract Metadata to proceed and download the result.

Select a Document
Sample.pptx



using System.Text;
using DevExpress.Docs.Presentation;

string ReadDocumentProperties(Stream inputStream, bool readDocumentProperties, bool readCustomProperties) {
    var output = new StringBuilder();

    using var presentation = new Presentation(inputStream);

    if(readDocumentProperties) {
        // Core Properties
        var coreProperties = presentation.DocumentProperties;
        output.AppendLine("CORE DOCUMENT PROPERTIES:");
        output.AppendLine(new string('-', 30));
        output.AppendLine($"Title: {coreProperties.Title ?? ""}");
        output.AppendLine($"Author: {coreProperties.Author ?? ""}");
        output.AppendLine($"Subject: {coreProperties.Subject ?? ""}");
        output.AppendLine($"Keywords: {coreProperties.Keywords ?? ""}");
        output.AppendLine($"Category: {coreProperties.Category ?? ""}");
        output.AppendLine($"Company: {coreProperties.Company ?? ""}");
        output.AppendLine($"Manager: {coreProperties.Manager ?? ""}");
        output.AppendLine($"Created Date: {coreProperties.Created.ToString("yyyy-MM-dd HH:mm:ss")}");
        output.AppendLine($"Last Printed: {coreProperties.Printed.ToString("yyyy-MM-dd HH:mm:ss")}");
        output.AppendLine();
    }

    if(readCustomProperties) {
        var customProperties = presentation.DocumentProperties.CustomProperties;

        output.AppendLine("CUSTOM PROPERTIES:");
        output.AppendLine(new string('-', 30));

        // Check if there are any custom properties
        var hasCustomProperties = false;
        var customPropsList = new List<string>();

        foreach(string propName in customProperties.Keys) {
            hasCustomProperties = true;
            var propValue = customProperties[propName];
            var valueStr = propValue.ToString() ?? "";
            var typeStr = propValue.GetType().Name ?? "String";
            customPropsList.Add($"{propName}: {valueStr} ({typeStr})");
        }
        if(!hasCustomProperties)
            output.AppendLine("No custom properties found.");
        else
            foreach(var customProp in customPropsList)
                output.AppendLine(customProp);
        output.AppendLine();
    }
    return output.ToString();
}