Inleiding

Aspose.Slides FOSS voor C++ (aspose_slides_foss) is een gratis, open-source C++20 bibliotheek voor het programmatic maken en manipuleren van PowerPoint presentaties. Volledig gebouwd in native C++ zonder externe runtime-afhankelijkheden, behalve CMake 3.20+, geeft het ontwikkelaars volledige controle over PPTX-bestanden zonder Microsoft Office of enige propriëtaire software te vereisen.

De bibliotheek wordt uitgebracht onder de MIT-licentie, waardoor hij geschikt is voor zowel commerciële als niet-commerciële projecten. De openbare API bevindt zich in de Aspose::Slides::Foss namespace en biedt een rijk objectmodel dat presentaties, dia’s, vormen, tabellen, tekstframes, documenteigenschappen, opmerkingen en PPTX-export omvat.

Deze post loopt de core API surface door: de klassen en methoden die je het vaakst zult gebruiken bij het bouwen, opmaken en opslaan van presentaties.


Wat er inbegrepen is

Presentatie- en dia-beheer

De Presentation klasse is het toegangspunt. Het maken van een nieuwe instantie geeft je een standaard dia die onmiddellijk klaar is voor inhoud. Je krijgt toegang tot dia’s via de SlideCollection die wordt geretourneerd door slides(), die indextoegang, iteratie, verwijdering en herschikking ondersteunt.

#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);

Vormen en AutoShapes

Elke dia maakt een ShapeCollection beschikbaar via zijn shapes() accessor. De collectie biedt fabrieksmethoden voor het toevoegen van verschillende vormtypen: add_auto_shape voor standaard geometrische vormen (rechthoeken, ellipsen, driehoeken), add_connector voor lijnverbindingen, add_table voor tabellen, en add_picture_frame voor afbeeldingen.

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);

De ShapeCollection ondersteunt ook size(), remove(), remove_at(), reorder(), index_of() en clear() voor het beheren van vormen na creatie.

Tekst- en alinea-opmaak

Vormen kunnen tekst bevatten via TextFrame. Gebruik add_text_frame() op een AutoShape om tekstinhoud toe te voegen, of krijg toegang tot het bestaande frame via text_frame(). Tekst is georganiseerd in alinea’s, elk met een of meer delen. De BasePortionFormat klasse onthult lettertype-stijleigenschappen, waaronder vet, cursief, onderlijningstype, hoofdlettergebruik, doorhaling en letterkleur.

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!"

Vulling, verloop en visuele effecten

Elke vorm biedt een FillFormat die toegankelijk is via fill_format(). Je kunt effen vullingen, verloopvullingen of patroonvullingen instellen via de set_fill_type() methode. Verloopvullingen worden geconfigureerd via het GradientFormat object, dat lineaire hoeken, verloopvorm en kleurstops ondersteunt via 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);

De EffectFormat klasse (benaderd via effect_format()) voegt gloed-, buitenste schaduw- en zachte rand-effecten toe. Elk effect wordt ingeschakeld met een specifieke methode (enable_glow_effect(), enable_outer_shadow_effect(), enable_soft_edge_effect()) en geconfigureerd via het geretourneerde object.

Tabellen

Tabellen worden aangemaakt met add_table() op de shape-collectie. Je levert kolombreedtes en rijhoogtes aan als vectoren. Het geretourneerde Table object stelt rows() en columns() collecties beschikbaar, en individuele Cell objecten ondersteunen tekstinhoud via 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

Documenteigenschappen en Opmerkingen

De DocumentProperties klasse laat je metadata instellen zoals titel, auteur, onderwerp, trefwoorden, categorie, revisienummer en tijdstempels. Toegang krijg je via het presentatie-object.

Opmerkingen worden beheerd via CommentAuthorCollection en CommentCollection. Je voegt auteurs toe met add_author(), en koppelt vervolgens opmerkingen aan specifieke dia’s op specifieke coördinaten.

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);

Snelstart

Bouwen vanaf broncode

De bibliotheek vereist CMake 3.20+ en een C++20-compatibele compiler. Kloon de repository en bouw:

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

Minimaal voorbeeld

#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;
}

Ondersteunde formaten

De SaveFormat enum definieert alle exportdoelen. De volgende formaten zijn bevestigd in de broncode:

FormaatExtensieLezenSchrijven
PPTX.pptx–Ja
PPT.ppt–Planned
PPSX.ppsx–Planned
PPTM.pptm–Planned
PPSM.ppsm–Planned
POTX.potx–Planned
POTM.potm–Planned
POT.pot–Planned
PPS.pps–Planned
ODP.odp–Planned
OTP.otp–Planned
FODP.fodp–Planned
PDF.pdf–Planned
XPS.xps–Planned
HTML.html–Planned
HTML5.html–Planned
TIFF.tiff–Planned
GIF.gif–Planned
SWF.swf–Planned
MD.md–Planned
XML.xml–Planned

Opmerking: Momenteel is alleen PPTX-export geïmplementeerd. Andere formatwaarden bestaan in de SaveFormat enumeratie voor toekomstige compatibiliteit, maar zijn nog niet functioneel. De save() methode genereert altijd PPTX-uitvoer, ongeacht de formatparameter.


Open source & licenties

Aspose.Slides FOSS voor C++ wordt uitgebracht onder de MIT-licentie. Je kunt het vrij gebruiken in persoonlijke projecten, commerciële toepassingen en herverdeelde bibliotheken. Er zijn geen API sleutels, watermerken of gebruikslimieten. De volledige broncode is beschikbaar op GitHub op https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.


Aan de slag

Klaar om Aspose.Slides FOSS in uw C++-project te integreren? Hier zijn de belangrijkste bronnen:

Gerelateerde bronnen