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.
.pptx через Presentation() или Presentation(path).SlideCollection с помощью add_empty_slide(), remove() и remove_at().ShapeType геометрические фигуры через add_auto_shape().add_connector().NotesSlideManager.pres.comment_authors() и их связанных комментариев.Portion через PortionFormat.FillFormat и FillType.EffectFormat.ParagraphFormat и set_alignment().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;
}
Это бесплатная библиотека C++ с лицензией MIT для создания, чтения и редактирования презентаций PowerPoint .pptx без необходимости установки Microsoft Office.
.pptx — поддерживаемый формат чтения/записи. Экспорт в PDF, HTML, SVG или изображения недоступен в этой версии.
Нет. Aspose.Slides FOSS — это автономная библиотека C++ без зависимости от Microsoft Office, автоматизации COM или какого-либо проприетарного runtime.
Используйте CMake FetchContent для интеграции библиотеки напрямую из GitHub. Библиотека требует компилятор, совместимый с C++20.
Да. Библиотека поддерживает эффекты внешней тени, свечения, размытия и отражения для любого объекта формы через API EffectFormat.
Да. Деструктор Presentation автоматически освобождает всё внутреннее состояние, поэтому явная очистка не требуется.
Нет. Неизвестные части XML, встречающиеся при загрузке, сохраняются дословно при сохранении, поэтому содержимое, которое библиотека ещё не понимает, никогда не теряется.
Библиотека лицензирована по MIT и размещена на GitHub. Сообщения об ошибках и pull requests приветствуются.