Введение
Aspose.Slides FOSS for .NET предоставляет полный набор классов для управления презентациями PowerPoint полностью на C#. Библиотека позволяет создавать новые .pptx файлы с нуля, загружать существующие, манипулировать слайдами и объектами, а также сохранять результат обратно на диск – всё без установки Microsoft Office или каких‑либо внешних зависимостей.
Пакет NuGet Aspose.Slides.Foss нацелен на .NET 9.0 и работает одинаково на Windows, macOS, Linux и в контейнерах Docker. Он выпущен под лицензией MIT, поэтому вы можете использовать его в коммерческих и открытых проектах без ограничений.
В этом посте рассматриваются основные возможности управления презентациями: работа со слайдами, построение иерархий фигур, организация текста, управление таблицами и сохранение в PPTX.
Что включено
Создание и загрузка презентаций
Класс Presentation является точкой входа для каждой операции. Вы можете создать пустую презентацию, загрузить её из пути к файлу или прочитать из потока. Класс реализует IDisposable, поэтому обёртывание его в оператор using гарантирует правильное освобождение ресурсов.
// Create a brand-new, empty presentation
using var pres = new Presentation();
// Load an existing file
using var existing = new Presentation("report.pptx");
Объект Presentation раскрывает полную иерархию слайдов через свойства, такие как Slides, Masters, LayoutSlides, Sections, CommentAuthors, Images и NotesSize.
Работа со слайдами
SlideCollection, возвращаемый Presentation.Slides, поддерживает добавление, клонирование, вставку, переупорядочивание и удаление слайдов. Вы можете клонировать слайд в пределах той же презентации или между презентациями, сохраняя или переназначая макеты.
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;
Каждый Slide предоставляет SlideNumber, Hidden, LayoutSlide, NotesSlideManager и Name. Вы можете перебрать коллекцию с помощью foreach или преобразовать её в массив с помощью ToArray().
Фигуры и автофигуры
Каждый слайд содержит ShapeCollection, доступный через Slide.Shapes. Коллекция предоставляет фабричные методы для наиболее распространённых типов фигур.
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();
Методы AddAutoShape и InsertAutoShape принимают значение перечисления ShapeType плюс координаты позиции и размера. AddConnector, InsertConnector, AddPictureFrame и InsertPictureFrame следуют той же схеме.
Text: Параграфы и части
Текст в презентации находится внутри TextFrame, который содержит ParagraphCollection. Каждый Paragraph содержит PortionCollection из Portion объектов, представляющих отдельные текстовые фрагменты с независимым форматированием.
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);
Каждый Portion имеет свойство PortionFormat для управления шрифтом, размером, полужирным/курсивом, цветом, подчеркиванием и другими атрибутами уровня символов. ParagraphFormat управляет выравниванием, стилем маркеров, интервалом и отступами.
Таблицы
Таблицы добавляются через ShapeCollection.AddTable, который принимает ширины столбцов и высоты строк в виде массивов. Возвращаемый объект Table предоставляет доступ к Rows, Columns и отдельным объектам 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;
Сохранение презентаций
Метод Presentation.Save записывает документ в файл или поток. Перечисление SaveFormat указывает формат вывода. PPTX является основным поддерживаемым форматом вывода.
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);
Вы также можете передать объект SaveOptions для дополнительного контроля над выводом.
Быстрый старт
Установите пакет через .NET CLI:
dotnet add package aspose.slides.foss
Затем создайте и сохраните минимальную презентацию:
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);
Поддерживаемые форматы
| Формат | Расширение | Чтение | Запись |
|---|---|---|---|
| PPTX | .pptx | Да | Да |
| PPSX | .ppsx | Нет | Да |
| PPTM | .pptm | Нет | Да |
| POTX | .potx | Нет | Да |
| ODP | .odp | Нет | Да |
| FODP | .fodp | Нет | Да |
Примечание: Библиотека читает и записывает PPTX нативно. Другие форматы, перечисленные в перечислении
SaveFormat, объявлены на уровне API; фактическая точность экспорта может различаться. Устаревший двоичный формат.pptне поддерживается.
Открытый исходный код и лицензирование
Aspose.Slides FOSS for .NET выпущен под лицензией MIT. Полный исходный код доступен на GitHub. Вы можете использовать его в коммерческих и открытых проектах, модифицировать код и распространять его без ограничений. Не требуется API‑ключ, файл лицензии или регистрация.
Начало работы
- Developer Guide: docs.aspose.org/slides/net/ – учебные материалы и концептуальная документация.
- Knowledge Base: kb.aspose.org/slides/net/ – часто задаваемые вопросы и статьи‑инструкции.
- API Reference: reference.aspose.org/slides/net/ – полное описание классов и методов.