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 визначає всі експортні цілі. наступні формати підтверджені в вихідному коді:
| Format | Extension | Read | Write |
|---|---|---|---|
| PPTX | .pptx | – | Так, я знаю. |
| PPT | .ppt | – | Planned |
| PPSX | .ppsx | – | Planned |
| PPTM | .pptm | – | Planned |
| PPSM | .ppsm | – | Planned |
| POTX | .покс | – | Planned |
| POTM | .potm | – | Planned |
| POT | .копійка | – | Planned |
| PPS | .pps | – | Planned |
| ODP | .odp | – | Planned |
| OTP | .otp | – | Planned |
| FODP | .fodp | – | Planned |
| – | Planned | ||
| XPS | .xps | – | Planned |
| HTML | .html (доступний файл) | – | Planned |
| HTML5 | .html (доступний файл) | – | Planned |
| TIFF | .Тиф. | – | Planned |
| GIF | .gif | – | Planned |
| SWF | .swf (свф) | – | Planned |
| MD | .md | – | Planned |
| XML | .xml | – | Planned |
Примітка: В даний час реалізовано тільки експорт 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 (людина-читання) і бінарні (комплектні).:
- Documentation: https://docs.aspose.org/slides/cpp/ для керівництва розробниками, уроків та концептуальних оглядів.
- База знань: https://kb.aspose.org/slides/cpp/ для часто задаваних питань та статей про те, як виконувати загальні завдання.
- Референція API: https://reference.aspose.org/slides/cpp/ для документації по класах повного публічного API.