1. Продукты
  2.   Aspose.Slides
  3.   Aspose.Slides FOSS for C++

Aspose.Slides FOSS для C++

Создавайте, читайте и редактируйте презентации PowerPoint из C++ — бесплатно и с открытым исходным кодом, без зависимости от Office.

Открытая C++ библиотека для презентаций PowerPoint

Aspose.Slides FOSS для C++ — это библиотека с лицензией MIT для работы с файлами PowerPoint .pptx. Интегрируйте её через CMake FetchContent и сразу начните создавать, читать и редактировать презентации без установки Microsoft Office или какого‑либо проприетарного runtime.

Библиотека предоставляет API презентаций, построенный вокруг Presentation, Slide, ShapeCollection, TextFrame, Paragraph и Portion, концептуальной модели, используемой самим PowerPoint. Добавляйте и удаляйте слайды, вставляйте AutoShapes, Tables и Connectors, форматируйте текст на уровне символов с помощью полужирного, курсивного, размера шрифта и цвета, применяйте сплошные или градиентные заливки и добавляйте визуальные эффекты (тень, свечение, размытие, отражение).

Семантика RAII обеспечивает надёжную очистку ресурсов: деструктор Presentation автоматически освобождает всё внутреннее состояние. Неизвестные части XML, встречающиеся при загрузке, сохраняются дословно при сохранении, поэтому при круговом преобразовании содержимое, которое библиотека ещё не понимает, никогда не уничтожается. Для работы библиотеки требуется компилятор, поддерживающий C++20. Для дополнительных возможностей см. Aspose.Slides for C++ enterprise edition.

API презентаций и слайдов

  • Создать и открыть PPTX: Создавайте новые презентации или открывайте существующие файлы .pptx через Presentation() или Presentation(path).
  • Добавлять и удалять слайды: Программно управлять SlideCollection с помощью add_empty_slide(), remove() и remove_at().
  • AutoShapes: Вставляйте прямоугольники, эллипсы, линии и другие ShapeType геометрические фигуры через add_auto_shape().
  • Таблицы и соединители: Добавьте структурированные формы таблиц и соединительные линии между формами через add_connector().
  • Speaker notes: Читайте и записывайте примечания к каждому слайду через NotesSlideManager.
  • Ветвленные комментарии: Доступ к ветвям комментариев осуществляется путем итерации pres.comment_authors() и их связанных комментариев.

Где Aspose.Slides FOSS может использоваться

  • Создание отчетов: Создавайте фирменные наборы слайдов из источников данных без Office.
  • Автоматизация шаблонов: Заполняйте шаблоны PPTX динамическим контентом в CI/CD конвейерах.
  • Миграция контента: Читать существующие презентации и перестраивать или переоформлять слайды.
  • Embedded systems: Обрабатывайте файлы PPTX в средах с критически важной производительностью или ограниченными ресурсами.
  • Пакетная обработка: Применяйте единообразные изменения форматирования к большим библиотекам слайдов.

Форматирование текста и визуальные эффекты

  • Форматирование на уровне символов: Применяйте полужирный, курсив, размер шрифта и цвет к отдельным объектам Portion через PortionFormat.
  • Сплошные и градиентные заливки: Установите заливку фигуры в сплошной цвет или линейный градиент с несколькими остановками, используя FillFormat и FillType.
  • Эффекты тени и свечения: Применяйте внешнюю тень, свечение, размытие и отражение к любой фигуре через EffectFormat.
  • Выравнивание абзаца: Установите выравнивание слева, по центру, справа или по ширине для каждого абзаца, используя ParagraphFormat и set_alignment().
  • Round-trip safe: Неизвестные части XML сохраняются дословно при повторном сохранении.

Опыт разработчика

Aspose.Slides FOSS интегрируется через CMake FetchContent, поэтому ручная загрузка или системная установка не требуются. Библиотека собирается из исходного кода вместе с вашим проектом.

API зеркально отражает собственную объектную модель PowerPoint (Presentation, Slide, ShapeCollection, TextFrame, Paragraph, Portion), поэтому любой, знакомый с объектной моделью PowerPoint, может сразу использовать библиотеку. Она лицензирована по MIT, открытый исходный код на GitHub и требует компилятора, совместимого с C++20.

Создать презентацию и добавить фигуру

RAII гарантирует, что деструктор Presentation автоматически освобождает все ресурсы, когда объект выходит из области видимости. add_auto_shape() принимает перечисление ShapeType, затем позицию x/y и ширину/высоту в пунктах — shape’s text_frame предоставляет доступ к установке текстового содержимого.

include(FetchContent)
FetchContent_Declare(
  aspose_slides_foss
  GIT_REPOSITORY https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
  GIT_TAG main
)
FetchContent_MakeAvailable(aspose_slides_foss)
#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>

int main() {
    Aspose::Slides::Foss::Presentation prs;
    auto& slide = prs.slides()[0];

    // Add a rectangle AutoShape
    auto& shape = slide.shapes().add_auto_shape(
        Aspose::Slides::Foss::ShapeType::RECTANGLE,
        50, 50, 400, 150
    );
    shape.text_frame()->set_text("Hello, Aspose.Slides!");

    prs.save("output.pptx", Aspose::Slides::Foss::SaveFormat::PPTX);
    return 0;
}
 ```cmake
include(FetchContent)
FetchContent_Declare(
  aspose_slides_foss
  GIT_REPOSITORY https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
  GIT_TAG main
)
FetchContent_MakeAvailable(aspose_slides_foss)
 

Форматировать текст и применить эффект заливки

Форматирование текста работает на уровне Portion — наименьшей единице последовательности символов. Откройте сохранённый файл, перейдите к первой части первого абзаца и задайте свойства шрифта напрямую. Заполнение фигуры независимо: установите тип заполнения solid и задайте цвет.

#include <Aspose/Slides/Foss/presentation.h>

namespace asf = Aspose::Slides::Foss;

int main() {
    asf::Presentation prs("output.pptx");
    auto& shape = prs.slides()[0].shapes()[0];
    auto& portion = shape.text_frame()
        ->paragraphs()[0].portions()[0];

    // Bold, 18pt text
    portion.portion_format().set_font_bold(asf::NullableBool::TRUE);
    portion.portion_format().set_font_height(18);

    // Solid background fill on the shape
    shape.fill_format().set_fill_type(asf::FillType::SOLID);

    prs.save("formatted.pptx", asf::SaveFormat::PPTX);
    return 0;
}
 ```cpp
#include <Aspose/Slides/Foss/presentation.h>

namespace asf = Aspose::Slides::Foss;

int main() {
    asf::Presentation prs("output.pptx");
    auto& shape = prs.slides()[0].shapes()[0];
    auto& portion = shape.text_frame()
        ->paragraphs()[0].portions()[0];

    // Bold, 18pt text
    portion.portion_format().set_font_bold(asf::NullableBool::TRUE);
    portion.portion_format().set_font_height(18);

    // Solid background fill on the shape
    shape.fill_format().set_fill_type(asf::FillType::SOLID);

    prs.save("formatted.pptx", asf::SaveFormat::PPTX);
    return 0;
}
 

Часто задаваемые вопросы

Что такое Aspose.Slides FOSS для C++?

Это бесплатная библиотека C++ с лицензией MIT для создания, чтения и редактирования презентаций PowerPoint .pptx без необходимости установки Microsoft Office.

Какие форматы файлов поддерживаются?

.pptx — поддерживаемый формат чтения/записи. Экспорт в PDF, HTML, SVG или изображения недоступен в этой версии.

Требуется ли Microsoft Office или PowerPoint?

Нет. Aspose.Slides FOSS — это автономная библиотека C++ без зависимости от Microsoft Office, автоматизации COM или какого-либо проприетарного runtime.

Как установить его?

Используйте CMake FetchContent для интеграции библиотеки напрямую из GitHub. Библиотека требует компилятор, совместимый с C++20.

Могу ли я применить визуальные эффекты, такие как тень и свечение?

Да. Библиотека поддерживает эффекты внешней тени, свечения, размытия и отражения для любого объекта формы через API EffectFormat.

Использует ли библиотека RAII для управления ресурсами?

Да. Деструктор Presentation автоматически освобождает всё внутреннее состояние, поэтому явная очистка не требуется.

Приведёт ли round-tripping PPTX к уничтожению неизвестного содержимого?

Нет. Неизвестные части XML, встречающиеся при загрузке, сохраняются дословно при сохранении, поэтому содержимое, которое библиотека ещё не понимает, никогда не теряется.

Где можно найти исходный код?

Библиотека лицензирована по MIT и размещена на GitHub. Сообщения об ошибках и pull requests приветствуются.

  

Ресурсы поддержки и обучения

 Русский