Introduction

Aspose.Slides FOSS for C++ (aspose_slides_foss) - це безкоштовна бібліотека C++20 з відкритим кодом для створення та маніпулювання презентаціями PowerPoint. Створена повністю на рідній мові C++, без зовнішніх залежностей від часу виконання, крім CMake 3.20 +, вона дає розробникам повний контроль над файлами PPTX без необхідності Microsoft Office або будь-якого власницького програмного забезпечення.

Бібліотека випускається за ліцензією MIT, що робить її підходящою як для комерційних, так і некоммерчних проектів. Публічний API живе в Aspose::Slides::Foss namespace і забезпечує багату об’єктну модель, що охоплює презентації, слайди, форми, таблиці, текстові рамки, властивості документів, коментарі та експорт PPTX.

У цьому публікації вийде проглянути основні API: класи та методи, які найчастіше використовуються при створенні, форматированні і збереженні презентацій.


Що включається

Представлення та управління слайдами

У. Presentation Створення нового екземпляра дає вам слайд, який відразу ж готовий до змісту. Ви отримуєте доступ до слайда через SlideCollection повернутий slides(), що підтримує індексированний доступ, ітерацію, видалення та перепорядкування.

#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;

Presentation pres;
auto& slide = pres.slides()[0]; // first slide
// Work with the slide...
pres.save("output.pptx", SaveFormat::PPTX);

Форми та Автоформи

Кожна слайд показує ShapeCollection через її shapes() Колекція містить фабричні методи для додавання різних типів форм: add_auto_shape для стандартних геометричних форм (прямокутники, еліпси, трикутні), add_connector для коннекторів ліній, add_table для таблиць, а також add_picture_frame для зображень.

auto& slide = pres.slides()[0];

// Add a rectangle
auto& rect = slide.shapes().add_auto_shape(
    ShapeType::RECTANGLE, 50, 50, 300, 100);

// Add an ellipse
auto& ellipse = slide.shapes().add_auto_shape(
    ShapeType::ELLIPSE, 400, 50, 150, 150);

// Add a connector between shapes
auto& conn = slide.shapes().add_connector(
    ShapeType::BENT_CONNECTOR3, 0, 0, 1, 1);

У. ShapeCollection також підтримує size(), remove(), remove_at(), reorder(), index_of(), і clear() для управління формами після створення.

Форматування тексту та абзаців

Форми можуть зберігати текст через: TextFrame.Використовуйте. add_text_frame() на AutoShape додавати текст або отримати доступ до існуючої рамки через text_frame().Текст організовується на абзаці, кожен з яких містить одну або кілька частин. BasePortionFormat клас викриває властивості стилювання шрифту, включаючи сильний, курсивний, тип підчеркнення, капіталізацію, пробиття і колір шрифта.

auto& shape = pres.slides()[0].shapes().add_auto_shape(
    ShapeType::RECTANGLE, 50, 50, 300, 100, false);
shape.add_text_frame("Hello, world!");
auto text = shape.text_frame()->text(); // "Hello, world!"

Поповнення, градієнт і візуальні ефекти

Кожна форма забезпечує FillFormat доступний через: fill_format().Ви можете встановити твердої заповнення, заглиблення наповнювання або шаблону поповнення через set_fill_type() Метод. Склона заповнення конфігуруються через GradientFormat об’єкт, який підтримує лінійні кути, градієнтну форму і колірні зупинки через GradientStopCollection.

auto& shape = slide.shapes().add_auto_shape(
    ShapeType::RECTANGLE, 50, 50, 300, 150);
shape.fill_format().set_fill_type(FillType::GRADIENT);
auto& gf = shape.fill_format().gradient_format();
gf.set_gradient_shape(GradientShape::LINEAR);
gf.set_linear_gradient_angle(45);
gf.gradient_stops().add(0.0f, Color::blue);
gf.gradient_stops().add(1.0f, Color::red);

У. EffectFormat клас (доступ через: effect_format()) додає блискучість, зовнішні тінь та м’які ефекти краю.enable_glow_effect(), enable_outer_shadow_effect(), enable_soft_edge_effect()) і конфігурується через його повернутий об’єкт.

Tables

Таблиці створюються з add_table() Ви надаєте широту колонки і висоту рядка як вектори. Table об’єкт експонується rows() і columns() колекції, а також індивідуальні Cell об’єкти підтримують текст через: TextFrame.

std::vector<double> col_widths = {100, 150, 200};
std::vector<double> row_heights = {40, 40, 40};
auto& table = slide.shapes().add_table(
    50, 50, col_widths, row_heights);
// table.rows().size() == 3
// table.columns().size() == 3

Свойства та коментарі документу

У. DocumentProperties class дозволяє задавати метадані, такі як назва, автор, предмет, ключові слова, категорія, номер перегляду та часовий штамп. Доступ до нього через об’єкт презентації.

Коментари керуються через: CommentAuthorCollection і CommentCollection.Ви додаєте авторів з add_author(), а потім додати коментарі до конкретних слайдів на конкретных координатах.

Presentation pres;
auto& author = pres.comment_authors().add_author("Alice", "A");
auto& slide = pres.slides()[0];
auto& comment = author.comments().add_comment(
    "Review note", slide, PointF(2.0f, 3.0f), now);

Швидкий старт

Звідси-то й підійде.

Бібліотека вимагає CMake 3.20+ і компілятора з функцією C++20. Клонируйте репозиторій та створюйте:

git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

Мінімальний приклад

#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];

    // Add a shape with text
    auto& shape = slide.shapes().add_auto_shape(
        ShapeType::RECTANGLE, 50, 50, 300, 100, false);
    shape.add_text_frame("Hello from Aspose.Slides FOSS!");

    // Apply a solid fill
    shape.fill_format().set_fill_type(FillType::SOLID);
    shape.fill_format().solid_fill_color().set_color(Color::blue);

    // Save
    pres.save("hello.pptx", SaveFormat::PPTX);
    return 0;
}

Підтримувані формати

У. SaveFormat enum визначає всі експортні цілі. наступні формати підтверджені в вихідному коді:

FormatExtensionReadWrite
PPTX.pptxТак, я знаю.
PPT.pptPlanned
PPSX.ppsxPlanned
PPTM.pptmPlanned
PPSM.ppsmPlanned
POTX.поксPlanned
POTM.potmPlanned
POT.копійкаPlanned
PPS.ppsPlanned
ODP.odpPlanned
OTP.otpPlanned
FODP.fodpPlanned
PDF.pdfPlanned
XPS.xpsPlanned
HTML.html (доступний файл)Planned
HTML5.html (доступний файл)Planned
TIFF.Тиф.Planned
GIF.gifPlanned
SWF.swf (свф)Planned
MD.mdPlanned
XML.xmlPlanned

Примітка: В даний час реалізовано тільки експорт PPTX. SaveFormat наперед сумісності, але ще не функціональні. save() метод завжди виробляє вихід PPTX незалежно від параметра формату.


Відкритий код та ліцензія

Aspose.Slides FOSS for C++ is released under the MIT license. You can use it freely in personal projects, commercial applications, and redistributed libraries. There are no API keys, watermarks, or usage limits. The full source code is available on GitHub at https://github.com/aspose-slides-foss/Aspose.Slides - FOSS-for-Cpp.


Починати з

STL - стандартний формат для 3D-принту. він представляє сурову трикутну геометрію без матеріалів, кольорів або іерархії сцен. файли ST L походять в двох варіантах: ASCII (людина-читання) і бінарні (комплектні).:

Пов’язані ресурси