Introduzione

Aspose.Slides FOSS per .NET fornisce un set completo di classi per gestire le presentazioni PowerPoint interamente in C#. La libreria consente di creare nuovi file .pptx da zero, caricare quelli esistenti, manipolare diapositive e forme e salvare il risultato su disco – tutto senza installare Microsoft Office o alcuna dipendenza esterna.

Il pacchetto NuGet Aspose.Slides.Foss è destinato a .NET 9.0 e funziona identicamente su Windows, macOS, Linux e contenitori Docker. È rilasciato sotto licenza MIT, quindi puoi usarlo in progetti commerciali e open‑source senza restrizioni.

Questo post illustra le funzionalità principali di gestione delle presentazioni: lavorare con le diapositive, creare gerarchie di forme, organizzare il testo, gestire le tabelle e salvare in PPTX.


Cosa è incluso

Creazione e caricamento di presentazioni

La classe Presentation è il punto di ingresso per ogni operazione. È possibile creare una presentazione vuota, caricarne una da un percorso file o leggerla da uno stream. La classe implementa IDisposable, quindi avvolgerla in un’istruzione using garantisce il rilascio corretto delle risorse.

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

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

L’oggetto Presentation espone l’intera gerarchia delle diapositive tramite proprietà come Slides, Masters, LayoutSlides, Sections, CommentAuthors, Images e NotesSize.

Lavorare con Slides

Il SlideCollection restituito da Presentation.Slides supporta l’aggiunta, la clonazione, l’inserimento, il riordino e la rimozione delle diapositive. È possibile clonare una diapositiva all’interno della stessa presentazione o tra presentazioni, preservando o rimappando i layout.

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;

Ogni Slide espone SlideNumber, Hidden, LayoutSlide, NotesSlideManager e Name. Puoi iterare la collezione con foreach o convertirla in un array con ToArray().

Forme e AutoForme

Ogni diapositiva contiene un ShapeCollection accessibile tramite Slide.Shapes. La raccolta fornisce metodi di fabbrica per i tipi di forma più comuni.

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();

I metodi AddAutoShape e InsertAutoShape accettano un valore enum ShapeType più le coordinate di posizione e dimensione. AddConnector, InsertConnector, AddPictureFrame e InsertPictureFrame seguono lo stesso schema.

Testo: Paragrafi e Parti

Il testo in una presentazione si trova all’interno di un TextFrame, che contiene un ParagraphCollection. Ogni Paragraph contiene un PortionCollection di oggetti Portion che rappresentano singole sequenze di testo con formattazione indipendente.

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);

Ogni Portion ha una proprietà PortionFormat per controllare il carattere, la dimensione, il grassetto/corsivo, il colore, la sottolineatura e altri attributi a livello di carattere. ParagraphFormat controlla l’allineamento, lo stile dei punti elenco, la spaziatura e l’indentazione.

Tabelle

Le tabelle vengono aggiunte tramite ShapeCollection.AddTable, che accetta larghezze delle colonne e altezze delle righe come array. L’oggetto Table restituito fornisce l’accesso a Rows, Columns e agli oggetti individuali Cell.

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);

// Set text in a cell
table.Rows[0][0].TextFrame.Text = "Header 1";
table.Rows[0][1].TextFrame.Text = "Header 2";
table.Rows[0][2].TextFrame.Text = "Header 3";

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

// Style presets
table.StylePreset = TableStylePreset.MediumStyle2Accent1;

Salvataggio delle presentazioni

Il metodo Presentation.Save scrive il documento su un file o stream. L’enumerazione SaveFormat specifica il formato di output. PPTX è il formato di output principale supportato.

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);

Puoi anche passare un oggetto SaveOptions per un controllo aggiuntivo sull’output.


Avvio rapido

Installa il pacchetto tramite la CLI .NET:

dotnet add package aspose.slides.foss

Quindi crea e salva una presentazione minimale:

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.TextFrame.Text = "Quarterly Report";

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

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

Formati supportati

FormatoEstensioneLetturaScrittura
PPTX.pptx
PPSX.ppsxNo
PPTM.pptmNo
POTX.potxNo
ODP.odpNo
FODP.fodpNo

Nota: La libreria legge e scrive PPTX nativamente. Altri formati elencati nell’enum SaveFormat sono dichiarati a livello API; la fedeltà dell’esportazione reale può variare. Il formato binario legacy .ppt non è supportato.


Open Source e Licenze

Aspose.Slides FOSS per .NET è rilasciato sotto licenza MIT. Il codice sorgente completo è disponibile su GitHub. Puoi usarlo in progetti commerciali e open‑source, modificare il codice e ridistribuirlo senza restrizioni. Non è necessaria alcuna chiave API, file di licenza o registrazione.


Iniziare