Въведение

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

Библиотеката е пусната под лиценза на MIT, което я прави подходяща както за търговски, така и за некоммерчески проекти. Aspose::Slides::Foss имеespace и осигурява богат модел на обекти, покриващи презентации, слайдове, форми, таблици, текстови рамки, свойства на документа, коментари и 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);

Форми и автоматериали

Всяка от тях показва A 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()и конфигурирани чрез връщания му обект.

Таблица

Таблиците са създадени с 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 клас ви позволява да зададете метаданни като заглавие, автор, предмет, ключови думи, категория, брой преглед и часовни знаци.

Коментари се управляват чрез 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 определя всички експортни цели. следните формати се потвърждават в източния код:

ФорматътРазширяванеПрочететеПисане
PPTX.ППТКДа
PPT.ППТПланирани
PPSX.ППСХПланирани
PPTM.ППТМПланирани
PPSM.ППММПланирани
POTX.ПотксПланирани
POTM.ПотмПланирани
POT.ПотПланирани
PPS.ППСПланирани
ODP.ОтпПланирани
OTP.ОтпПланирани
FODP.ФОДППланирани
PDF.pdf наПланирани
XPS.КСНУМКСПланирани
HTML.html наПланирани
HTML5.html наПланирани
TIFF.ТифПланирани
GIF.ГИФПланирани
SWF.СВФПланирани
MD.МДРПланирани
XML.КСМЛПланирани

Забележка : В момента се прилага само експортът на 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/аспо-слиди-фос/Аспо.Слиди - FOSS-за Cpp.


Започваме

Готови ли сте да интегрирате Aspose.Slides FOSS в вашия C++ проект? Ето основните ресурси: