Wprowadzenie
Aspose.Slides FOSS dla .NET zapewnia kompletny zestaw klas do zarządzania prezentacjami PowerPoint w pełni w C#. Biblioteka pozwala tworzyć nowe pliki .pptx od podstaw, ładować istniejące, manipulować slajdami i kształtami oraz zapisywać wynik z powrotem na dysk — wszystko bez instalowania Microsoft Office ani jakichkolwiek zewnętrznych zależności.
Pakiet Aspose.Slides.Foss NuGet jest przeznaczony dla .NET 9.0 i działa identycznie na systemach Windows, macOS, Linux oraz w kontenerach Docker. Został wydany na licencji MIT, więc możesz go używać w projektach komercyjnych i open-source bez żadnych ograniczeń.
Ten wpis przedstawia podstawowe możliwości zarządzania prezentacjami: pracę ze slajdami, budowanie hierarchii kształtów, organizację tekstu, zarządzanie tabelami oraz zapisywanie do formatu PPTX.
Co jest w zestawie
Tworzenie i ładowanie prezentacji
Klasa Presentation jest punktem wejścia dla każdej operacji. Możesz utworzyć pustą prezentację, załadować ją z ścieżki pliku lub odczytać ze strumienia. Klasa implementuje IDisposable, więc otoczenie jej instrukcją using zapewnia prawidłowe zwolnienie zasobów.
// Create a brand-new, empty presentation
using var pres = new Presentation();
// Load an existing file
using var existing = new Presentation("report.pptx");
Obiekt Presentation udostępnia pełną hierarchię slajdów poprzez właściwości takie jak Slides, Masters, LayoutSlides, Sections, CommentAuthors, Images oraz NotesSize.
Praca ze slajdami
Obiekt SlideCollection zwrócony przez Presentation.Slides obsługuje dodawanie, klonowanie, wstawianie, zmienianie kolejności i usuwanie slajdów. Możesz sklonować slajd w tej samej prezentacji lub pomiędzy prezentacjami, zachowując lub mapując układy.
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;
Każdy Slide udostępnia SlideNumber, Hidden, LayoutSlide, NotesSlideManager oraz Name. Możesz iterować kolekcję przy użyciu foreach lub przekształcić ją w tablicę za pomocą ToArray().
Kształty i AutoShapes
Każdy slajd zawiera ShapeCollection dostępny przez Slide.Shapes. Użyj AddAutoShape(), AddConnector() i AddPictureFrame(), aby dodać najczęstsze typy kształtów.
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();
Metody AddAutoShape i InsertAutoShape przyjmują wartość wyliczenia ShapeType oraz współrzędne pozycji i rozmiaru. AddConnector, InsertConnector, AddPictureFrame i InsertPictureFrame stosują ten sam schemat.
Tekst: Akapity i fragmenty
Tekst w prezentacji znajduje się wewnątrz TextFrame, który zawiera ParagraphCollection. Każdy Paragraph przechowuje PortionCollection Portion obiektów reprezentujących pojedyncze fragmenty tekstu z niezależnym formatowaniem.
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);
Każdy Portion ma właściwość PortionFormat służącą do kontrolowania czcionki, rozmiaru, pogrubienia/pochylenia, koloru, podkreślenia oraz innych atrybutów na poziomie znaku. ParagraphFormat kontroluje wyrównanie, styl wypunktowania, odstępy i wcięcia.
Tabele
Tabele są dodawane za pomocą ShapeCollection.AddTable, który przyjmuje szerokości kolumn i wysokości wierszy jako tablice. Zwrócony obiekt Table zapewnia dostęp do Rows, Columns oraz pojedynczych obiektów 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);
// 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;
Zapisywanie prezentacji
Metoda Presentation.Save zapisuje dokument do pliku lub strumienia. Enum SaveFormat określa format wyjściowy. PPTX jest głównym obsługiwanym formatem wyjściowym.
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);
Możesz także przekazać obiekt SaveOptions, aby uzyskać dodatkową kontrolę nad wyjściem.
Szybki start
Zainstaluj pakiet Aspose.Slides FOSS dla .NET przy użyciu CLI .NET:
dotnet add package Aspose.Slides.FossNastępnie utwórz i zapisz minimalną prezentację:
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);
Obsługiwane formaty
| Format | Rozszerzenie | Odczyt | Zapis |
|---|---|---|---|
| PPTX | .pptx | Tak | Tak |
| PPSX | .ppsx | Nie | Planned |
| PPTM | .pptm | Nie | Planned |
| POTX | .potx | Nie | Planned |
| ODP | .odp | Nie | Planned |
| FODP | .fodp | Nie | Planned |
Uwaga: Odczyt i zapis PPTX są w pełni zaimplementowane. Inne
SaveFormatwartości wyliczeniowe (PPSX, PPTM, ODP, itp.) są zdefiniowane dla przyszłej kompatybilności i będą funkcjonalne w przyszłych wersjach.
Open Source i licencjonowanie
Aspose.Slides FOSS dla .NET jest wydany na licencji MIT. Pełny kod źródłowy jest dostępny na GitHub. Możesz go używać w projektach komercyjnych i open-source, modyfikować kod i rozpowszechniać go bez ograniczeń. Nie wymaga klucza API, pliku licencyjnego ani rejestracji.
Rozpoczęcie
- Przewodnik programisty: docs.aspose.org/slides/net/ – samouczki i dokumentacja koncepcyjna.
- Baza wiedzy: kb.aspose.org/slides/net/ – najczęściej zadawane pytania i artykuły instruktażowe.
- API Reference: reference.aspose.org/slides/net/ – pełna referencja klasy i metody.