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
| Formato | Estensione | Lettura | Scrittura |
|---|---|---|---|
| PPTX | .pptx | Sì | Sì |
| PPSX | .ppsx | No | Sì |
| PPTM | .pptm | No | Sì |
| POTX | .potx | No | Sì |
| ODP | .odp | No | Sì |
| FODP | .fodp | No | Sì |
Nota: La libreria legge e scrive PPTX nativamente. Altri formati elencati nell’enum
SaveFormatsono dichiarati a livello API; la fedeltà dell’esportazione reale può variare. Il formato binario legacy.pptnon è 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
- Guida per sviluppatori: docs.aspose.org/slides/net/ – tutorial e documentazione concettuale.
- Base di conoscenza: kb.aspose.org/slides/net/ – FAQ e articoli how‑to.
- Riferimento API: reference.aspose.org/slides/net/ – riferimento completo di classi e metodi.