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.Foss

Nastę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

FormatRozszerzenieOdczytZapis
PPTX.pptxTakTak
PPSX.ppsxNiePlanned
PPTM.pptmNiePlanned
POTX.potxNiePlanned
ODP.odpNiePlanned
FODP.fodpNiePlanned

Uwaga: Odczyt i zapis PPTX są w pełni zaimplementowane. Inne SaveFormat wartoś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

Powiązane zasoby