DRIT.Presentation
26.9.1373
dotnet add package DRIT.Presentation --version 26.9.1373
NuGet\Install-Package DRIT.Presentation -Version 26.9.1373
<PackageReference Include="DRIT.Presentation" Version="26.9.1373" />
<PackageVersion Include="DRIT.Presentation" Version="26.9.1373" />
<PackageReference Include="DRIT.Presentation" />
paket add DRIT.Presentation --version 26.9.1373
#r "nuget: DRIT.Presentation, 26.9.1373"
#:package DRIT.Presentation@26.9.1373
#addin nuget:?package=DRIT.Presentation&version=26.9.1373
#tool nuget:?package=DRIT.Presentation&version=26.9.1373
DRIT.Presentation
Pure-Managed .NET Presentation Library
Create, Read, Manipulate, Sign, and Convert Presentation Files
DRIT.Presentation is a pure-managed, cross-platform .NET library for creating, reading, and manipulating presentation documents — PPTX, PPTM, PPSX, PPSM, and ODP — with full support for charts, tables, SmartArt, shapes, animations and transitions, comments and speaker notes, audio/video media, digital signatures (XAdES-BES), AES-256 encryption, VBA macros, and PDF/image/SVG/HTML export — without relying on any external software dependencies.
Key Benefits
- Pure managed C# implementation with minimal NuGet dependencies
- Consistent rendering results across Windows, Linux, macOS
- Seamless migration path from GemBox.Presentation and Aspose.Slides
- Full chart hierarchy (30+ chart types) with category labels, series, axes, and legends
- XAdES-BES digital signatures and AES-256 (ECMA-376 Agile) encryption
- Integrated with DRIT.Pdf for PDF export and DRIT.Drawing for advanced graphics
Cross-Platform Presentation Library
DRIT.Presentation targets .NET Framework 4.8 and .NET Standard 2.0, so it supports:
- Operating Systems: Windows, Linux, macOS
- Frameworks: .NET Framework 4.8, .NET Standard 2.0
- Dependencies: DRIT.Pdf; DRIT.Drawing; System.Drawing.Common; System.Text.Encoding.CodePages; System.IO.Packaging (.NET Standard 2.0); System.Security.Cryptography.Xml (.NET Standard 2.0)
Features
Document I/O
- Create — generate new presentations from scratch
- Load/Save — read from and write to file or stream (PPTX, PPTM, PPSX, PPSM, ODP), with load options (password, encryption expectation) and cancellation support
- Merge & Split —
Slides.AddClonefor presentation merging and slide extraction - Cross-format conversion — load PPTX, save as ODP (and vice-versa) with conversion-issue diagnostics
Slides
- Management — add, clone, reorder, remove, and hide slides
- Layouts — add slides by
SlideLayoutType(Title, TitleAndContent, Blank, SectionHeader, …) or by explicitLayoutSlide - Masters — slide masters, layout slides, and notes master hierarchy
- Sections — organize slides into named sections
- Slide size — standard and widescreen dimensions
- Hidden slides — mark slides as hidden during slide show
Text and Formatting
- FormattedText — paragraphs, runs, and rich-text formatting
- Character formatting — font name, size, bold, italic, underline, strikethrough, color, caps
- Paragraph formatting — alignment, line spacing, indentation, bullet characters, hanging indents
- Text boxes — add text boxes with shape geometry and auto-fit
- Find and replace — search and replace text across all slides (plain-text and regex)
Shapes and Drawing
- Shapes — rectangles, ellipses, triangles, rounded rectangles, and 180+ auto-shapes
- Fills — solid, gradient, pattern, and picture fills
- Lines — solid, gradient, dash patterns, arrow heads, and compound types
- Effects — shadow, glow, reflection, soft edges, and 3-D format
- Group shapes — nested groups with transforms
- Connectors — straight, elbow, and curved connectors
- Pictures — embed images with crop offsets and extraction
- Tables — create tables with rows, columns, cell merging, and built-in table styles
- SmartArt — read SmartArt diagrams with node hierarchy and layout types
- Ink — ink traces and brushes
- OLE objects — embed and extract OLE objects
- ActiveX controls — read control properties
Charts
Full chart hierarchy with 30+ chart types:
- Category charts — Column, Bar, 3-D Column, 3-D Bar, Pie, 3-D Pie, Doughnut, PieOfPie, BarOfPie
- Trend charts — Line, 3-D Line, Area, 3-D Area, Stock
- Statistical charts — Scatter (with variants), Bubble, 3-D Bubble, Radar, FilledRadar
- Surface charts — 3-D Surface, Wireframe 3-D Surface, Contour, Wireframe Contour
- Modern charts — Treemap, Sunburst, BoxWhisker, Waterfall, Funnel, Histogram, Map, Pareto
- Chart data —
SetCategoryLabelsandAddSeriesfor in-memory data binding - Chart formatting — titles, legends, data labels, axes, gridlines, and 3-D rotation
- Chart styles — color styles and chart style parts
Animation and Transitions
- Transitions — 20+ transition types (Fade, Push, Wipe, Morph, Wheel, Zoom, …) with direction, speed, sound, and auto-advance timing
- Animations —
AnimationTimeLinewith main sequence, interactive sequences, and text animations - Effects — entrance, emphasis, exit, and motion-path effects with behaviors and timing
Media
- Audio — embed audio with fade in/out, trim, and bookmarks
- Video — embed video with trim, bookmarks, and playback settings
- Media extraction — read embedded media bytes back from loaded presentations
Comments and Notes
- Comments — add, locate, and remove slide comments with author and position
- Modern comments — read modern comment threads with status
- Speaker notes — add, read, and remove notes slides
Hyperlinks and Navigation
- External links — URL and email hyperlinks
- Internal links — slide-to-slide jumps
- Zoom frames — slide zoom, section zoom, and summary zoom frames
Slide Show
- Settings — loop, use timings, browse mode, and custom shows
- Custom shows — named subsets of slides shown as separate tracks
- Read-only recommendation — mark presentations as read-only recommended
Protection and Security
- Modify protection — password-protected modification via
modifyVerifier(PBKDF2/SHA-512) - Encryption — AES-256 (ECMA-376 Agile) PPTX encryption with password-protected opening
- Digital signatures — XAdES-BES with qualifying properties and signer role; append and validate signatures; remove signatures
- PDF signing — sign and encrypt exported PDFs via
DRIT.Pdf
Macros and Automation
- VBA macros —
VbaProjectwith modules, references, and password protection
Metadata
- Document properties — built-in summary (Title, Author, Subject, Keywords) and statistics
- Custom properties — user-defined key/value pairs
- Sensitivity labels — Microsoft Purview sensitivity label read/write
- Custom XML parts — persist custom XML in the package
Conversion
- PDF export — export presentations to PDF with compliance (PDF/A-1b, PDF/A-2b), bookmarks, and encryption
- Image export — export slides as PNG, JPEG, BMP, or TIFF with DPI and notes placement
- SVG export — export slides as scalable vector graphics
- HTML export — export presentations as HTML
- ODP — cross-format save to OpenDocument Presentation
Supported File Formats
| Format | Description | Read | Write |
|---|---|---|---|
| PPTX | PowerPoint 2007+ Presentation | ✔️ | ✔️ |
| PPTM | PowerPoint Macro-Enabled Presentation | ✔️ | ✔️ |
| PPSX | PowerPoint 2007+ Show | ✔️ | ✔️ |
| PPSM | PowerPoint Macro-Enabled Show | ✔️ | ✔️ |
| ODP | OpenDocument Presentation | ✔️ | ✔️ |
| Portable Document Format | — | ✔️ | |
| PNG | PNG Image | — | ✔️ |
| JPEG | JPEG Image | — | ✔️ |
| TIFF | TIFF Image | — | ✔️ |
| BMP | Bitmap Image | — | ✔️ |
| SVG | Scalable Vector Graphics | — | ✔️ |
| HTML | HyperText Markup Language | — | ✔️ |
PDF, image, SVG, and HTML export are provided via the integrated DRIT.Pdf and DRIT.Drawing companions.
Installation
1. Install via NuGet
- Open Microsoft Visual Studio and the NuGet package manager
- Search for "DRIT.Presentation"
- Click Install to download and reference it in your project
2. Install via Package Manager Console
Install-Package DRIT.Presentation
3. Install via .NET CLI
dotnet add package DRIT.Presentation
Code Examples
Create a Presentation
using DRIT.Presentation;
using DRIT.Presentation.Drawing;
using DRIT.Presentation.Office;
// Initialize a new presentation
var presentation = new Presentation();
var slide = presentation.AddSlide();
// Add a title text box
var title = slide.Content.AddTextBox(
1, 1, 22, 3, ScreenMeasurementUnit.Centimeter);
title.Text = "EuroTech Summit 2026";
// Add a subtitle with rich formatting
var subtitle = slide.Content.AddTextBox(
1, 5, 22, 2, ScreenMeasurementUnit.Centimeter);
var paragraph = subtitle.FormattedText.AddParagraph();
var run = paragraph.AddRun("The Future of Embedded AI");
run.Font.Size = 18;
run.Font.Italic = true;
run.Font.DrawingColor = DrawingColor.FromHex("#2E86AB");
// Save the presentation
presentation.Save("output.pptx");
Load and Iterate Slides
using DRIT.Presentation;
// Load an existing presentation
var presentation = Presentation.Load("input.pptx");
// Iterate all slides and their shapes
foreach (var slide in presentation.Slides)
{
Console.WriteLine($"Slide {slide.SlideNumber}: {slide.Name}");
foreach (var shape in slide.Content.Shapes)
{
Console.WriteLine($" Shape: {shape.GetType().Name}");
}
}
Add a Table
using DRIT.Presentation;
using DRIT.Presentation.Office;
var presentation = new Presentation();
var slide = presentation.AddSlide();
// Create a 5×5 table
var table = slide.Content.AddTable(
5, 5, 1, 2, 22, 9, ScreenMeasurementUnit.Centimeter);
// Header row
string[] headers = { "Project", "Owner", "Status", "Due Date", "Budget" };
for (int col = 0; col < headers.Length; col++)
{
table.Rows[0].Cells[col].Text.Text = headers[col];
table.Rows[0].Cells[col].Fill.SolidColor =
System.Drawing.Color.FromArgb(0x2E, 0x86, 0xAB);
}
// Data rows
string[][] data = {
new[] { "Atlas", "Sophie Müller", "On track", "2026-09-30", "120 000" },
new[] { "Beacon", "Liam Osei", "At risk", "2026-07-15", "85 000" },
new[] { "Condor", "Yuna Park", "Delayed", "2026-11-01", "200 000" },
new[] { "Delphi", "Carlos Ruiz", "On track", "2026-08-20", "95 000" },
};
for (int row = 0; row < data.Length; row++)
for (int col = 0; col < data[row].Length; col++)
table.Rows[row + 1].Cells[col].Text.Text = data[row][col];
// Apply a built-in table style
table.SetStyle(TableStyleName.MediumStyle2Accent2);
presentation.Save("table.pptx");
Create a Chart
using DRIT.Presentation;
using DRIT.Presentation.Chart.Office;
using DRIT.Presentation.Office;
var presentation = new Presentation();
var slide = presentation.AddSlide();
// Create a bar chart
var chart = slide.Content.AddChart(
ChartType.Bar, 1, 2, 22, 14, ScreenMeasurementUnit.Centimeter);
// Bind category labels and series
chart.SetCategoryLabels(new[] { "Q1", "Q2", "Q3", "Q4" });
chart.AddSeries("Orion", new double[] { 4200, 5100, 4800, 6300 });
chart.AddSeries("Vega", new double[] { 3100, 2900, 3600, 4200 });
chart.AddSeries("Lyra", new double[] { 1800, 2400, 3100, 3900 });
// Set the chart title
chart.Title.FormattedText.Text = "Quarterly Revenue by Product";
presentation.Save("chart.pptx");
Add Shapes with Fills
using DRIT.Presentation;
using DRIT.Presentation.Drawing;
using DRIT.Presentation.Office;
var presentation = new Presentation();
var slide = presentation.AddSlide();
// Solid-filled rectangle
var startBox = slide.Content.AddShape(
ShapeType.Rectangle, 1, 2, 3, 3, ScreenMeasurementUnit.Centimeter, "Start");
startBox.Fill.SolidColor = System.Drawing.Color.FromArgb(0x2E, 0x86, 0xAB);
// Ellipse with gradient fill
var banner = slide.Content.AddShape(
ShapeType.Rect, 1, 10, 22, 4, ScreenMeasurementUnit.Centimeter);
banner.Fill.GradientStops.Add(0, DrawingColor.FromHex("#2E86AB"));
banner.Fill.GradientStops.Add(1, DrawingColor.FromHex("#A23B72"));
presentation.Save("shapes.pptx");
Add Speaker Notes
using DRIT.Presentation;
using DRIT.Presentation.Office;
var presentation = new Presentation();
var slide = presentation.AddSlide();
// Add a title
var title = slide.Content.AddTextBox(
1, 1, 22, 3, ScreenMeasurementUnit.Centimeter);
title.Text = "Keynote: The Future of Embedded AI";
// Add speaker notes
var notesSlide = slide.AddNotes();
var notesBox = notesSlide.Content.AddTextBox(
1, 1, 20, 8, ScreenMeasurementUnit.Centimeter);
notesBox.Text = "Remind audience of the 2025 survey results before this slide.";
presentation.Save("notes.pptx");
Add Slide Transitions
using DRIT.Presentation;
using DRIT.Presentation.Enumerations;
var presentation = Presentation.Load("input.pptx");
// Fade transition with auto-advance
presentation.Slides[0].Transition = new SlideTransitionInfo
{
TransitionType = TransitionType.Fade,
AdvanceOnClick = true,
AdvanceAfterMs = 5000
};
// Push transition
presentation.Slides[1].Transition = new SlideTransitionInfo
{
TransitionType = TransitionType.Push,
Direction = TransitionDirection.Left
};
presentation.Save("transitions.pptx");
Find and Replace Text
using DRIT.Presentation;
var presentation = Presentation.Load("input.pptx");
// Replace across all slides
int count = presentation.Replace("EuroTech Summit 2025", "EuroTech Summit 2026");
Console.WriteLine($"Replaced {count} occurrences");
// Find all matches
var matches = presentation.FindAll("Session");
foreach (var m in matches)
Console.WriteLine($"Slide {m.Slide.SlideNumber}: '{m.Text}'");
presentation.Save("updated.pptx");
Export to PDF
using DRIT.Presentation;
var presentation = Presentation.Load("input.pptx");
// Export entire presentation to PDF
presentation.Save("output.pdf", new PdfSaveOptions
{
Compliance = PdfCompliance.Pdf15,
IncludeBookmarks = true
});
// Export specific slides only
presentation.Save("slides.pdf", new PdfSaveOptions
{
SlideIndexes = new[] { 0, 1, 2 }
});
Export Slides to Images
using DRIT.Presentation;
var presentation = Presentation.Load("input.pptx");
// Export first slide as PNG
presentation.Save("slide1.png", new ImageSaveOptions
{
Format = ImageFormat.Png,
SlideNumber = 1,
Width = 1920,
DpiX = 150
});
// Export all slides as JPEG
presentation.Save("slides.jpg", new ImageSaveOptions
{
Format = ImageFormat.Jpeg,
DpiX = 96
});
Encrypt a Presentation
using DRIT.Presentation;
var presentation = new Presentation();
presentation.AddSlide();
// Save with AES-256 encryption
presentation.Save("encrypted.pptx", new PptxSaveOptions
{
EncryptionMode = PptxEncryptionMode.Ecma376Agile,
Password = "open-password"
});
// Open with the correct password
var loaded = Presentation.Load("encrypted.pptx", "open-password");
Console.WriteLine($"Slides: {loaded.Slides.Count}");
Add a Digital Signature
using System.Security.Cryptography.X509Certificates;
using DRIT.Presentation;
var presentation = new Presentation();
presentation.AddSlide();
// Sign with a PFX certificate (XAdES-BES)
var certificate = new X509Certificate2("certificate.pfx", "password");
presentation.SaveSigned("signed.pptx", new PptxDigitalSignatureSaveOptions
{
Certificate = certificate,
SignerRole = "Author"
});
// Validate on reload
var signatures = Presentation.ListDigitalSignatures("signed.pptx");
Console.WriteLine($"Signatures: {signatures.Count}");
Create a Macro-Enabled Presentation
using DRIT.Presentation;
var presentation = new Presentation();
presentation.AddSlide();
// Add a VBA module
var module = presentation.VbaProject.Modules.AddModule("SummitHelpers");
module.Code = @"
Sub ShowNextSlide()
ActivePresentation.SlideShowWindow.View.Next
End Sub";
// Save as .pptm
presentation.Save("macros.pptm");
// Edit existing code
var loaded = Presentation.Load("macros.pptm");
var existing = loaded.VbaProject.Modules["SummitHelpers"];
existing.Code = existing.Code.Replace("ShowNextSlide", "ShowSummitTitle");
loaded.Save("macros_edited.pptm");
System Requirements
- Target Frameworks: .NET Framework 4.8, .NET Standard 2.0
- Dependencies: DRIT.Pdf; DRIT.Drawing; System.Drawing.Common; System.Text.Encoding.CodePages; System.IO.Packaging (.NET Standard 2.0); System.Security.Cryptography.Xml (.NET Standard 2.0)
- Optional: DRIT.Pdf for PDF export and signing (bundled)
Documentation
© 2021-2026 DR-IT Ltd. All Rights Reserved.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.8
- DRIT.Drawing (>= 26.7.874)
- DRIT.Pdf (>= 26.7.888)
- System.Drawing.Common (>= 8.0.0)
- System.Text.Encoding.CodePages (>= 6.0.1)
-
.NETStandard 2.0
- DRIT.Drawing (>= 26.7.874)
- DRIT.Pdf (>= 26.7.888)
- System.Drawing.Common (>= 8.0.0)
- System.IO.Packaging (>= 8.0.0)
- System.Security.Cryptography.Xml (>= 8.0.1)
- System.Text.Encoding.CodePages (>= 6.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 26.9.1373 | 85 | 9/19/2026 |
- Initial NuGet release.