File & Document Processing APIs — New PowerPoint Presentation API Library
We are happy to announce the CTP release of our new .NET PowerPoint Presentation API library (available with v25.1.4+). This library was designed to help you create, read, edit, convert, merge, split, and print Microsoft PowerPoint files within .NET apps.
In this blog post, I’ll describe the key features available in this Community Tech Preview, share product architecture insights, and demonstrate how you can create an application to manage presentation files in code.

Presentation API Overview
Cross-platform PowerPoint File Processing
The DevExpress Presentation API is built atop .NET and supports a broad range of platforms and operating systems out of the box. Whether you’re developing a traditional desktop application, a web backend, or a cross-platform solution, you can seamlessly integrate PowerPoint file processing without any dependency on Microsoft Office or PowerPoint installations.
Supported frameworks, operating systems, and environments include:
- NET 8/9, .NET Framework 4.6.2+
- Windows, Linux, macOS
- Azure, AWS, Docker

Supported Formats and Document Elements
The current version (v25.1.x) of our PowerPoint Presentation API library allows you to import and save presentation files using the PPTX file format (and of course to print/export files to PDF).
The DevExpress Presentation library includes a comprehensive set of APIs and settings to create/manage presentation elements programmatically. You can add, access, modify, or remove the following PowerPoint document elements and customize associated settings:
- Slides, Slide Layouts, Slide Master
- Slide Notes, Note Master
- Shapes, Connectors, Text Boxes, Images
- Shape Text, Paragraphs, and Placeholders
- Bullet and Numbered Lists
- Presentation Header and Footer
- Built-in and Custom Document Properties
- Presentation View Properties
Code Example — Convert a Presentation to PDF
using DevExpress.Docs.Presentation;
//...
// Load a presentation
Presentation presentation = new Presentation(File.ReadAllBytes("mypresentation.pptx"));
// Export to PDF
presentation.ExportToPdf(new FileStream(@"D:\exported-document.pdf", FileMode.Create));Key Features Designed to Manage Presentations
The DevExpress Presentation API gives you the power to programmatically create and organize presentation content. It supports the following usage-scenarios:
- Add, clone, rearrange, resize, hide, or delete presentation slides.
- Create, customize, and apply different slide layouts.
- Access and update slide master content.
- Merge multiple presentations or copy slides from one presentation to another.
- Split one presentation to multiple presentations (slide-by-slide).
- Extract or assign text to a specific paragraph, shape, slide, speaker note, or entire presentation.
- Format text, paragraphs, shapes, and slide backgrounds.
- Manage presentation metadata.
Code Example — Merge Two Presentations
using DevExpress.Docs.Presentation;
//...
// Load presentations
Presentation presentation1 = new Presentation(File.ReadAllBytes("presentation1.pptx"));
Presentation presentation2 = new Presentation(File.ReadAllBytes("presentation2.pptx"));
// Merge presentation slides
foreach (Slide slide in presentation2.Slides) {
presentation1.Slides.Add(slide);
}
// Save the merged document to the PPTX file
FileStream outputStream = new FileStream(@"D:\merged_presentation.pptx", FileMode.Create);
presentation.SaveDocument(outputStream);
Object-based Document Model
Unlike other PowerPoint-processing libraries that rely on interface-based document model, the DevExpress Presentation API library uses the concrete Object-oriented model. This architectural choice is designed to offer a cleaner, more flexible, and developer-friendly experience.
Using our Presentation API library, you can work directly with intuitive classes — Slide, Shape, TextParagraph, and so on. You can initialize document objects and configure all necessary settings prior to adding new elements to a presentation. This offers a natural and structured approach to flow-based document generation.
Additionally, you can reuse document elements and configuration settings across multiple slides and presentations. For example, you can add the same slide to multiple presentations or apply the same formatting to multiple slides or shapes (as illustrated in the example below).
// Create and apply the custom background to multiple slides in two different presentations
SolidFill fill = new SolidFill(Color.LightCyan);
CustomSlideBackground background = new CustomSlideBackground(fill);
presentation1.Slides[0].Background = background;
presentation1.Slides[1].Background = background;
presentation2.Slides[0].Background = background;Our approach allows you to make changes in presentation documents with minimal code. At the same time, if you need unique instances to prevent unintentional changes, you can create independent clones of document elements and settings.
Get Started with PowerPoint Presentation API
To start using the DevExpress Presentation API in your project, you need to:
1. Install the DevExpress.Docs.Presentation NuGet package (v25.1.4+) from Nuget.org.
dotnet add package DevExpress.Docs.Presentation --version 25.1.4Alternatively, use the Local/Personal DevExpress NuGet feed: Use NuGet Packages to Install Office File API Components.
2. Add the DevExpress.Docs.Presentation namespace to your project file.
3. Create a Presentation instance.
- Use the parameterless constructor to create a new presentation with one blank slide.
- Use the constructor with a byte array or stream parameter to load an existing PPTX file.
4. Use APIs to build or modify the presentation (generate presentation content, apply formatting, update metadata, or reorganize slides).
5. Generate output.
- Use
Presentation.SaveDocumentto save the presentation to PPTX . - Use
Presentations.ExportToPdfto generate a PDF file. - Use
Presentation.Printto print the presentation.
Code Example — Create a New Presentation from Scratch
using DevExpress.Docs.Presentation;
//...
// Create a presentation with a single empty slide
Presentation presentation = new Presentation();
// Configure Slide Master
SlideMaster slideMaster = presentation.SlideMasters[0];
slideMaster.Background = new CustomSlideBackground(new SolidFill(Color.FromArgb(194, 228, 249)));
// Add a new slide with content
presentation.Slides.Clear();
Slide slide1 = new Slide(slideMaster.Layouts.Get(SlideLayoutType.Title));
foreach (Shape shape in slide1.Shapes) {
if (shape.PlaceholderSettings.Type is PlaceholderType.CenteredTitle) {
shape.TextArea = new TextArea("Daily Testing Status Report");
}
if (shape.PlaceholderSettings.Type is PlaceholderType.Subtitle) {
shape.TextArea = new TextArea($"{DateTime.Now: dddd, MMMM d, yyyy}");
}
}
presentation.Slides.Add(slide1);
// Save Presentation to PPTX
FileStream outputStream = new FileStream(@"D:\mypresentation.pptx", FileMode.Create);
presentation.SaveDocument(outputStream);Learn More
Documentation:
- Presentation API – Overview
- Get Started: Create Your First Presentation
- Create, Load, and Save Presentations
- Export Presentation to PDF
- Print Presentation
- Manage Slides
- Work with Shapes
Demos & Examples:
- GitHub Example: DevExpress Presentation API Library – Get Started
- GitHub Example: Extract Presentation Images, Notes, and Pictures
- Blazor Demo: Presentation to PDF
Licensing
The PowerPoint Presentation API library is included in the DevExpress Office File API and DevExpress Universal subscriptions. A valid license is required to use this library in production code. For additional information, please visit our Buy page.
Your Feedback Matters
Since this is a CTP version, features are still in development. We’d love your input on what to prioritize next. Please take a moment to complete the short survey below.
You’re also welcome to share your thoughts and questions via the DevExpress Support Center.