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:
| Formaat | Extensie | Lezen | Schrijven |
|---|---|---|---|
| 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 |
| – | 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:
- Documentation: https://docs.aspose.org/slides/cpp/ voor ontwikkelaarsgidsen, tutorials en conceptuele overzichten.
- Kennisbank: https://kb.aspose.org/slides/cpp/ voor FAQ’s en how-to-artikelen die veelvoorkomende taken behandelen.
- API Reference: https://reference.aspose.org/slides/cpp/ voor class-by-class documentatie van de volledige openbare API.