Inleiding

Aspose.Slides FOSS voor .NET biedt een uitgebreide set klassen voor het beheren van PowerPoint presentaties volledig in C#. De bibliotheek stelt je in staat om nieuwe .pptx bestanden vanaf nul te maken, bestaande te laden, dia’s en vormen te manipuleren, en het resultaat terug op schijf op te slaan – allemaal zonder Microsoft Office of enige externe afhankelijkheid te installeren.

Het Aspose.Slides.Foss NuGet pakket richt zich op .NET 9.0 en draait identiek op Windows, macOS, Linux en Docker-containers. Het wordt uitgebracht onder de MIT-licentie, zodat je het kunt gebruiken in commerciële en open-source projecten zonder beperkingen.

Deze post loopt door de kernfunctionaliteiten voor presentatiebeheer: werken met dia’s, opbouwen van vormhiërarchieën, organiseren van tekst, beheren van tabellen, en opslaan naar PPTX.


Wat er inbegrepen is

Presentaties maken en laden

De Presentation klasse is het toegangspunt voor elke bewerking. Je kunt een lege presentatie maken, er één laden vanaf een bestandspad, of lezen vanuit een stream. De klasse implementeert IDisposable, dus het omhullen ervan in een using statement zorgt ervoor dat bronnen correct worden vrijgegeven.

// Create a brand-new, empty presentation
using var pres = new Presentation();

// Load an existing file
using var existing = new Presentation("report.pptx");

Het Presentation object maakt de volledige diahiërarchie toegankelijk via eigenschappen zoals Slides, Masters, LayoutSlides, Sections, CommentAuthors, Images en NotesSize.

Werken met dia’s

Het SlideCollection dat wordt geretourneerd door Presentation.Slides ondersteunt het toevoegen, klonen, invoegen, herschikken en verwijderen van dia’s. Je kunt een dia klonen binnen dezelfde presentatie of over meerdere presentaties heen, terwijl je de lay-outs behoudt of opnieuw toewijst.

using var pres = new Presentation();

// The default presentation contains one blank slide
var firstSlide = pres.Slides[0];

// Clone the first slide and append it
pres.Slides.AddClone(firstSlide);

// Insert a clone at a specific position
pres.Slides.InsertClone(1, firstSlide);

// Remove a slide by index
pres.Slides.RemoveAt(2);

// Total slide count
int count = pres.Slides.Count;

Elke Slide maakt SlideNumber, Hidden, LayoutSlide, NotesSlideManager en Name beschikbaar. Je kunt de collectie itereren met foreach of deze converteren naar een array met ToArray().

Vormen en AutoShapes

Elke dia bevat een ShapeCollection die toegankelijk is via Slide.Shapes. Gebruik AddAutoShape(), AddConnector() en AddPictureFrame() om de meest voorkomende vormtypen toe te voegen.

using var pres = new Presentation();
var slide = pres.Slides[0];

// Add a rectangle AutoShape
var rect = slide.Shapes.AddAutoShape(
    ShapeType.Rectangle, 50, 50, 300, 150);

// Add a connector
var connector = slide.Shapes.AddConnector(
    ShapeType.BentConnector3, 100, 200, 200, 50);

// Reorder a shape to bring it forward
slide.Shapes.Reorder(0, rect);

// Remove all shapes
slide.Shapes.Clear();

De AddAutoShape en InsertAutoShape methoden accepteren een ShapeType enum-waarde plus positie- en afmetingencoördinaten. AddConnector, InsertConnector, AddPictureFrame en InsertPictureFrame volgen hetzelfde patroon.

Tekst: alinea’s en gedeelten

Tekst in een presentatie bevindt zich binnen een TextFrame, die een ParagraphCollection bevat. Elke Paragraph bevat een PortionCollection van Portion objecten die individuele tekstreeksen vertegenwoordigen met onafhankelijke opmaak.

using var pres = new Presentation();
var slide = pres.Slides[0];

var shape = slide.Shapes.AddAutoShape(
    ShapeType.Rectangle, 50, 50, 400, 200);

// Access the shape's text frame
var tf = shape.TextFrame;

// Read or set the full text
tf.Text = "Hello, presentation world!";

// Work with individual paragraphs and portions
var para = new Paragraph();
var portion = new Portion("Formatted run");
para.Portions.Add(portion);
tf.Paragraphs.Add(para);

Elke Portion heeft een PortionFormat eigenschap voor het beheren van lettertype, grootte, vet/cursief, kleur, onderstreping en andere teken-niveau attributen. ParagraphFormat regelt uitlijning, opsommingstijl, spatiëring en inspringen.

Tabellen

Tabellen worden toegevoegd via ShapeCollection.AddTable, die kolombreedtes en rijhoogtes als arrays accepteert. Het geretourneerde Table object biedt toegang tot Rows, Columns en individuele Cell objecten.

using var pres = new Presentation();
var slide = pres.Slides[0];

double[] colWidths = { 150, 150, 150 };
double[] rowHeights = { 40, 40, 40 };

var table = slide.Shapes.AddTable(
    50, 50, colWidths, rowHeights);

// Merge cells in the second row
table.MergeCells(table.Rows[1][0], table.Rows[1][2], false);

// Apply a visual style preset
table.StylePreset = TableStylePreset.MediumStyle2Accent1;

Presentaties opslaan

De Presentation.Save methode schrijft het document naar een bestand of stream. De SaveFormat enum specificeert het uitvoerformaat. PPTX is het primaire ondersteunde uitvoerformaat.

using var pres = new Presentation();
// ... build slides ...

// Save to a file
pres.Save("output.pptx", SaveFormat.Pptx);

// Save to a stream
using var ms = new MemoryStream();
pres.Save(ms, SaveFormat.Pptx);

// Save specific slides by index
pres.Save("subset.pptx", new[] { 1, 3 }, SaveFormat.Pptx);

Je kunt ook een SaveOptions object doorgeven voor extra controle over de uitvoer.


Snelle start

Installeer het Aspose.Slides FOSS pakket voor .NET met de .NET CLI:

dotnet add package Aspose.Slides.Foss

Maak vervolgens een minimale presentatie aan en sla deze op:

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

// 1. Create a new presentation
using var pres = new Presentation();

// 2. Get the default slide
var slide = pres.Slides[0];

// 3. Add a title shape
var title = slide.Shapes.AddAutoShape(
    ShapeType.Rectangle, 50, 30, 600, 60);
title.AddTextFrame("Quarterly Report");

// 4. Add a content shape
var body = slide.Shapes.AddAutoShape(
    ShapeType.Rectangle, 50, 120, 600, 300);
var bodyTf = body.AddTextFrame("");
var para = new Paragraph();
para.Portions.Add(new Portion("Revenue grew 12% year-over-year."));
bodyTf.Paragraphs.Add(para);

// 5. Save as PPTX
pres.Save("quarterly-report.pptx", SaveFormat.Pptx);

Ondersteunde formaten

FormaatExtensieLezenSchrijven
PPTX.pptxJaJa
PPSX.ppsxNeePlanned
PPTM.pptmNeePlanned
POTX.potxNeePlanned
ODP.odpNeePlanned
FODP.fodpNeePlanned

Opmerking: PPTX lezen en schrijven zijn volledig geïmplementeerd. Andere SaveFormat enum-waarden (PPSX, PPTM, ODP, enz.) zijn gedefinieerd voor toekomstgerichte compatibiliteit en zullen functioneel zijn in toekomstige releases.


Open source & licenties

Aspose.Slides FOSS voor .NET is uitgebracht onder de MIT-licentie. De volledige broncode is beschikbaar op GitHub. Je kunt het gebruiken in commerciële en open-source projecten, de code aanpassen en opnieuw distribueren zonder beperkingen. Er is geen API sleutel, licentiebestand of registratie vereist.


Aan de slag

Gerelateerde bronnen