Skip to main content
All docs
V25.1
  • Extract Presentation Content

    • 11 minutes to read

    Code samples in this help topic extract various content from presentations: shape text, images, slide notes, and so on.

    Use the following collections to obtain slides and their content:

    • Presentation.Slides - stores all slides in the presentation.
    • Slide.Shapes - stores shapes in a slide. Use shapes to access content such as text, images, figures, and so on.

    View Example

    Implementation Details

    Examples below use the following techniques to obtain slide content correctly:

    • The order of elements in the Shapes collection does not necessarily match the visual order. To process shapes from top to bottom or left to right, sort them by coordinates. Examples in this topic use the System.Linq namespace to sort elements.

      Code to review: the Sort shapes region.

    • You can identify and skip certain shape types. For example, the Shapes collection includes a slide number placeholder shape. Use the CommonShape.PlaceholderSettings.Type property to identify and skip this shape.

      Code to review: the Filter shapes region.

    • You can obtain only shapes that contain text. Check that the TextArea.Text property is not an empty string.

      Code to review: the Filter shapes region.

    Extract Slide Text

    Use the Shape‘s TextArea.Text property to obtain the shape text.

    Extract Text from a Specific Slide

    The following code sample obtains text from the second slide of the Sample.pptx presentation. Shapes with text are obtained in the following order - top and leftmost shapes go first:

    DevExpress Presentation API - Extract Text from a Specific Slide

    public static void Main(string[] _) {
        Presentation presentation = 
            new Presentation(File.ReadAllBytes(@"data\Sample.pptx"));
        // Extract text from the second slide 
        string slidesText = "";
    
        #region Sort shapes
        var sortedShapes = presentation.Slides[1].Shapes
            .Where(shape => shape is Shape && ((Shape)shape).TextArea != null)
            .OrderBy(shape => shape.Y)
            .ThenBy(shape => shape.X);
        #endregion
    
        foreach (var shape in sortedShapes) {
            if (shape is Shape textShape) {
                string shapeText = textShape.TextArea.Text;
    
                #region Filter shapes
                if (textShape.PlaceholderSettings?.Type == PlaceholderType.SlideNumber
                    || string.IsNullOrWhiteSpace(shapeText)) continue;
                #endregion
    
                slidesText += shapeText + "\r\n";
            }
        }
    }
    
    Show Extraction Result

    User Feedback

    Developers who use DevExpress products often highlight the following key benefits:

    💹 Comprehensive product lineup

    DevExpress offers a wide range of tools — 19 products, including 15 control libraries — along with cross-platform packages. Developers can select what they need for a specific project or use a full-featured suite.

    💭 Try before you buy

    DevExpress provides access to online demos and a free 30-day trial, allowing developers to evaluate whether the tools meet their needs.

    The company also backs its products with a 60-day unconditional money-back guarantee.

    ❣️User-friendly Tools

    Many developers highlight the clarity and optimization of DevExpress controls compared to alternatives. With an intuitive API, the tools are easy to set up and use across a variety of scenarios.

    Extract Text from all Slides

    The following code sample obtains text from all slides of the Sample.pptx presentation. Shapes with text are obtained in the following order - top and leftmost shapes go first:

    DevExpress Presentation API - Extract Text from a All Slides #1

    DevExpress Presentation API - Extract Text from a All Slides #2

    public static void Main(string[] _) {
        Presentation presentation = 
            new Presentation(File.ReadAllBytes(@"data\Sample.pptx"));
        // Extract text from all slides
        int slideNumber = 0;
        string slidesText = "";
        foreach (var slide in presentation.Slides) {
    
            #region Sort shapes
            var sortedShapes = slide.Shapes
                .Where(shape => shape is Shape && ((Shape)shape).TextArea != null)
                .OrderBy(shape => shape.Y)
                .ThenBy(shape => shape.X);
            #endregion
    
            foreach (var shape in sortedShapes) {
                if (shape is Shape textShape) {
                    string shapeText = textShape.TextArea.Text;
    
                    #region Filter shapes
                    if (textShape.PlaceholderSettings?.Type == PlaceholderType.SlideNumber
                        || string.IsNullOrWhiteSpace(shapeText)) continue;
                    #endregion
    
                    slidesText += shapeText+"\r\n";
                }
            }
            slideNumber++;
        }
    }
    
    Show Extraction Result

    The 2020s bring major shifts in .NET development, with technologies like Blazor and .NET MAUI enabling more integrated, cross-platform solutions.

    DevExpress supports these platforms with a growing set of UI components for web, mobile, and desktop applications.

    For web developers outside the .NET ecosystem, our DevExtreme library offers rich controls for React, Angular, and Vue, with strong TypeScript and SCSS support. On the desktop side, we continue to enhance our WinForms and WPF tools with modern features like DirectX rendering and HTML/CSS formatting.

    User Feedback

    Developers who use DevExpress products often highlight the following key benefits:

    💹 Comprehensive product lineup

    DevExpress offers a wide range of tools — 19 products, including 15 control libraries — along with cross-platform packages. Developers can select exactly what they need for a specific project or use a full-featured suite.

    💭 Try before you buy

    DevExpress provides access to online demos and a free 30-day trial, allowing developers to evaluate whether the tools are intuitive and meet their needs.

    The company also backs its products with a 60-day unconditional money-back guarantee.

    ❣️User-friendly Tools

    Many developers highlight the clarity and optimization of DevExpress controls compared to alternatives. With an intuitive API, the tools are easy to set up and use across a variety of scenarios.

    Extract Text from a Specific Paragraph of a Specific Shape

    The following code sample uses the Shapes.Find method to find the TextBox 3 shape on the first slide and then extracts the text from its second paragraph:

    DevExpress Presentation API - Extract a Paragraph Text from a Specific Shape

    public static void Main(string[] _) {
        Presentation presentation = 
            new Presentation(File.ReadAllBytes(@"data\Sample.pptx"));
        //Extract text from the specific shape's paragraph
        string paraText = "";
        Shape shape = presentation.Slides[0].Shapes.Find<Shape>(s => s.Name == "TextBox 3");
        paraText = shape.TextArea.Paragraphs[1].Text;
    }
    
    Show Extraction Result

    DevExpress supports these platforms with a growing set of UI components for web, mobile, and desktop applications.

    Extract Note Text

    Use the Slide.Notes collection to obtains notes of a specific slide.

    Extract Note Text from a Specific Slide

    The following code sample obtains the note text from the first slide of the Sample.pptx presentation:

    DevExpress Presentation API - Extract Notes from the Slide

    public static void Main(string[] _) {
        Presentation presentation = 
            new Presentation(File.ReadAllBytes(@"data\Sample.pptx"));
        // Extract note text from the first slide 
        string slideNoteText = "";
        foreach (var noteShape in presentation.Slides[0].Notes.Shapes) {
            if (noteShape is Shape textNoteShape) {
                string noteShapeText = textNoteShape.TextArea.Text;
                #region Filter shapes
                if (textNoteShape.PlaceholderSettings?.Type == PlaceholderType.SlideNumber
                    || string.IsNullOrWhiteSpace(noteShapeText)) continue;
                #endregion
                slideNoteText += noteShapeText + "\r\n";
            }
        }
    }
    
    Show Extraction Result

    Introduction text about DevExpress.

    Extract Note Body Text from a Specific Slide

    The following code sample obtains the note body text from the second slide of the Sample.pptx presentation:

    DevExpress Presentation API - Extract Notes from the Slide

    public static void Main(string[] _) {
        Presentation presentation = 
            new Presentation(File.ReadAllBytes(@"data\Sample.pptx"));
        // Extract body note text from the specific slide
        string notesText = "";
        foreach (var noteShape in presentation.Slides[1].Notes.Shapes) {
            if (noteShape is Shape textNoteShape 
                && textNoteShape.PlaceholderSettings.Type == PlaceholderType.Body) {
                string noteShapeText = textNoteShape.TextArea.Text;
                #region Filter shapes
                if (textNoteShape.PlaceholderSettings?.Type == PlaceholderType.SlideNumber
                    || string.IsNullOrWhiteSpace(noteShapeText)) continue;
                notesText += noteShapeText + "\r\n";
                #endregion
            }
        }
    }
    
    Show Extraction Result

    Key Benefits

    Extract Note Text from all Slides

    The following code sample obtains note text from all slides of the Sample.pptx presentation. Note shapes with text are obtained in the following order - top and leftmost shapes go first:

    DevExpress Presentation API - Extract Notes from the Slide

    DevExpress Presentation API - Extract Notes from the Slide

    public static void Main(string[] _) {
        Presentation presentation = 
            new Presentation(File.ReadAllBytes(@"data\Sample.pptx"));
    
        // Extract note text from all slides
        string notesText = "";
        foreach (var slide in presentation.Slides) {
            if (slide.Notes.Shapes.Any()) {
                #region Sort shapes
                var sortedNoteShapes = slide.Notes.Shapes
                    .Where(shape => shape is Shape && ((Shape)shape).TextArea != null)
                    .OrderBy(shape => shape.Y)
                    .ThenBy(shape => shape.X);
                #endregion
                foreach (var noteShape in sortedNoteShapes) {
                    if (noteShape is Shape textNoteShape) {
                        string noteShapeText = textNoteShape.TextArea.Text;
                        #region Filter shapes
                        if (textNoteShape.PlaceholderSettings?.Type == PlaceholderType.SlideNumber
                            || string.IsNullOrWhiteSpace(noteShapeText)) continue;
                        notesText += noteShapeText + "\r\n";
                        #endregion
                    }
                }
            }
        }
    }
    
    Show Extraction Result

    Introduction text about DevExpress.

    Key Benefits

    Describe key benefits to the customer.

    Extract Pictures

    Extract Pictures from a Specific Slide

    The following code sample obtains pictures from the second slide of the Sample.pptx presentation. The sample saves obtained images to files on disk. Topmost and leftmost pictures go first.

    DevExpress Presentation API - Extract a Pictures from a Specific Slide

    public static void Main(string[] _) {
        Presentation presentation = 
            new Presentation(File.ReadAllBytes(@"data\Sample.pptx"));
        // Extract pictures from the second slide 
        #region Sort shapes
        var sortedShapes = presentation.Slides[1].Shapes
            .Where(shape => shape is PictureShape)
            .OrderBy(shape => shape.Y)
            .ThenBy(shape => shape.X);
        #endregion
    
        byte imageCount = 0;
        foreach (PictureShape pictureShape in sortedShapes) {
            pictureShape.Image.Save("Slide2_Picture" + imageCount + ".png", DXImageFormat.Png);
            imageCount++;
        }
    }
    

    Extract Pictures from all Slides

    The following code sample obtains pictures from all slides of the Sample.pptx presentation. The sample saves obtained images to files on disk. Topmost and leftmost pictures go first.

    DevExpress Presentation API - Extract a Pictures from All Slides

    DevExpress Presentation API - Extract a Pictures from a Specific Slide

    public static void Main(string[] _) {
        Presentation presentation = 
            new Presentation(File.ReadAllBytes(@"data\Sample.pptx"));
        // Extract pictures from all slides
        int slideNumber = 0;
        foreach (var slide in presentation.Slides) {
            #region Sort shapes
            var sortedShapes = slide.Shapes
                .Where(shape => shape is PictureShape)
                .OrderBy(shape => shape.Y)
                .ThenBy(shape => shape.X);
            #endregion
    
            byte imageCount=0;
            foreach (PictureShape pictureShape in sortedShapes) {
                pictureShape.Image.Save("Slide" + slideNumber +"_Picture"+imageCount+".png", DXImageFormat.Png);
                imageCount++;
            }
           slideNumber++;
        }
    }