ShapeCrawler (formerly SlideDotNet) is a .NET library for manipulating PowerPoint presentations. It provides fluent APIs to process slides without having Microsoft Office installed. This library provides a simplified object model on top of the Open XML SDK for manipulating PowerPoint documents without any COM+ or COM interop layers.


Keywords
OOXML, OpenXml, PPTX, PowerPoint, Presentation, ShapeCrawler, Slides, csharp, dotnet, hacktoberfest, powerpoint-presentations, slide
License
MIT
Install
Install-Package ShapeCrawler -Version 0.54.2

Documentation

ShapeCrawler

PRs Welcome Nuget GitHub repo Good Issues for newbies GitHub Help Wanted issues

ShapeCrawler is a .NET library for manipulating PowerPoint presentations. It provides a simplified object model on top of the Open XML SDK, allowing users to process presentations without having Microsoft Office installed.

Contents

Quick Start

dotnet add package ShapeCrawler

var pres = new Presentation("pres.pptx");
var shapes = pres.Slide(1).Shapes;

var shapesCount = shapes.Count;

// Get text
var shape = shapes.Shape("TextBox 1");
var text = shape.TextBox!.Text;

How To?

Create presentation

var pres = new Presentation(p => p.Slide());

var shapes = pres.Slide(1).Shapes;

shapes.AddShape(x: 50, y: 60, width: 100, height: 70);
var addedShape = shapes.Last();

addedShape.TextBox!.SetText("Hello World!");

pres.Save("pres.pptx");

Update picture

var pres = new Presentation("pres.pptx");
var picture = pres.Slide(1).Shape("Picture 1").Picture!;

var image = System.IO.File.OpenRead("new-image.png");
picture.Image!.Update(image);
pres.Save();

var mimeType = picture.Image!.Mime;

More samples

You can find more usage samples in Examples.

Prerelease Version

To access the latest prerelease builds from the branch master, use the NuGet package source https://www.myget.org/F/shape/api/v3/index.json.

Have questions?

If you have a question:

How to contribute?

Give a star⭐ if you find this useful, please give it a star to show your support.

Bug Report

If you encounter an issue, report the bug on the issue page.

To be able to reproduce a bug, it's often necessary to have the original presentation file attached to the issue description. If this file contains confidential data and cannot be shared publicly, you can securely send it to theadamo86@gmail.com. Of course, if your security policy allow this. We assure you that only the maintainer will access this file, and it will not be shared publicly.

Code contributing

Pull Requests are welcome! Please read the Contribution Guide for more details.

Changelog

Version 0.71.5 - 2025-08-30

🐞Fixed update table shape width #1103

Visit CHANGELOG.md to see the full change history.