Introduktion
Aspose.Slides FOSS för C++ (aspose_slides_foss) är ett gratis, öppen källkod C++20-bibliotek för att programatiskt skapa och manipulera PowerPoint presentationer. Byggt helt i native C++ utan externa runtime-beroenden förutom CMake 3.20+, ger det utvecklare full kontroll över PPTX-filer utan att kräva Microsoft Office eller någon proprietär programvara.
Biblioteket är släppt under MIT-licensen, vilket gör det lämpligt för både kommersiella och icke-kommersiella projekt. Den offentliga API finns i Aspose::Slides::Foss-namnutrymmet och tillhandahåller en rik objektmodell som omfattar presentationer, bilder, former, tabeller, textramar, dokumentegenskaper, kommentarer och PPTX-export.
Detta inlägg går igenom kärn-API ytan: klasserna och metoderna du kommer att använda mest när du bygger, formaterar och sparar presentationer.
Vad som ingår
Presentation och bildhantering
Klassen Presentation är inträdespunkten. Att skapa en ny instans ger dig ett standardbildspel som omedelbart är redo för innehåll. Du får åtkomst till bilderna via SlideCollection som returneras av slides(), vilket stödjer indexerad åtkomst, iteration, borttagning och omordning.
#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);
Former och AutoShapes
Varje bild exponerar en ShapeCollection via sin shapes() åtkomstmetod. Samlingen tillhandahåller fabriksmetoder för att lägga till olika formtyper: add_auto_shape för standardgeometriska former (rektanglar, ellipser, trianglar), add_connector för linjekopplingar, add_table för tabeller och add_picture_frame för bilder.
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);
Den ShapeCollection stödjer också size(), remove(), remove_at(), reorder(), index_of() och clear() för att hantera former efter skapandet.
Text- och styckeformatering
Former kan hålla text via TextFrame. Använd add_text_frame() på en AutoShape för att bifoga textinnehåll, eller få åtkomst till den befintliga ramen via text_frame(). Text organiseras i stycken, där varje innehåller en eller flera delar. Klassen BasePortionFormat exponerar egenskaper för teckensnittsstil inklusive fet, kursiv, understrykningstyp, versalisering, genomstrykning och teckensnittsfärg.
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!"
Fyllning, gradient och visuella effekter
Varje form tillhandahåller en FillFormat som är åtkomlig via fill_format(). Du kan ställa in solida fyllningar, gradientfyllningar eller mönsterfyllningar genom set_fill_type()-metoden. Gradientfyllningar konfigureras via GradientFormat-objektet, som stödjer linjära vinklar, gradientform och färgstopp 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);
Klassen EffectFormat (åtkomlig via effect_format()) lägger till glöd, yttre skugga och mjuka kant-effekter. Varje effekt aktiveras med en dedikerad metod (enable_glow_effect(), enable_outer_shadow_effect(), enable_soft_edge_effect()) och konfigureras via det returnerade objektet.
Tabeller
Tabeller skapas med add_table() i shape-samlingen. Du anger kolumnbredder och radhöjder som vektorer. Det returnerade Table-objektet exponerar rows()- och columns()-samlingar, och enskilda Cell-objekt stödjer textinnehåll 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
Dokumentegenskaper och kommentarer
Klassen DocumentProperties låter dig ange metadata såsom titel, författare, ämne, nyckelord, kategori, revisionsnummer och tidsstämplar. Åtkom den via presentations-objektet.
Kommentarer hanteras via CommentAuthorCollection och CommentCollection. Du lägger till författare med add_author(), och fäster sedan kommentarer på specifika bilder på specifika koordinater.
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);
Snabbstart
Bygga från källkod
Biblioteket kräver CMake 3.20+ och en C++20-kompatibel kompilator. Klona repot och bygg:
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
Minimal exempel
#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;
}
Stödda format
Enumen SaveFormat definierar alla exportmål. Följande format är bekräftade i källkoden:
| Format | Filändelse | Läs | Skriv |
|---|---|---|---|
| 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 |
Obs: För närvarande är endast PPTX-export implementerad. Andra formatvärden finns i SaveFormat enum för framtida kompatibilitet men är ännu inte funktionella. Det save() metoden producerar alltid PPTX-utdata oavsett formatparametern.
Öppen källkod & licensiering
Aspose.Slides FOSS för C++ är släppt under MIT-licensen. Du kan använda det fritt i personliga projekt, kommersiella applikationer och omdistribuerade bibliotek. Det finns inga API nycklar, vattenmärken eller användningsbegränsningar. Den fullständiga källkoden finns på GitHub på https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.
Kom igång
Redo att integrera Aspose.Slides FOSS i ditt C++-projekt? Här är de viktigaste resurserna:
- Documentation: https://docs.aspose.org/slides/cpp/ för utvecklarguider, handledningar och konceptuella översikter.
- Kunskapsbas: https://kb.aspose.org/slides/cpp/ för vanliga frågor (FAQ) och instruktionsartiklar som täcker vanliga uppgifter.
- API Reference: https://reference.aspose.org/slides/cpp/ för klass-för-klass-dokumentation av hela den offentliga API.