DRIT.Presentation 26.9.1373

dotnet add package DRIT.Presentation --version 26.9.1373
                    
NuGet\Install-Package DRIT.Presentation -Version 26.9.1373
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DRIT.Presentation" Version="26.9.1373" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DRIT.Presentation" Version="26.9.1373" />
                    
Directory.Packages.props
<PackageReference Include="DRIT.Presentation" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DRIT.Presentation --version 26.9.1373
                    
#r "nuget: DRIT.Presentation, 26.9.1373"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DRIT.Presentation@26.9.1373
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DRIT.Presentation&version=26.9.1373
                    
Install as a Cake Addin
#tool nuget:?package=DRIT.Presentation&version=26.9.1373
                    
Install as a Cake Tool

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 & SplitSlides.AddClone for 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 explicit LayoutSlide
  • 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 dataSetCategoryLabels and AddSeries for 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
  • AnimationsAnimationTimeLine with 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
  • 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 macrosVbaProject with 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 ✔️ ✔️
PDF 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.