Introducció
Aspose.Slides FOSS for C++ (aspose_slides_foss) és una biblioteca C++20 de codi obert gratuïta per crear i manipular presentacions PowerPoint programàticament. Construït totalment en C ++ natiu sense dependències externes d’exécution més enllà del CMake 3.20 +, dóna als desenvolupadors un control complet sobre els fitxers PPTX sense necessitat de Microsoft Office o qualsevol software propietari .
La biblioteca es publica sota la llicència MIT, fent-la adequada tant per a projectes comercials com no comercial. L’API pública viu en el sistema de programació d’Internet. Aspose::Slides::Foss namespace i proporciona un model d’objecte ric que cobreix presentacions, diapositives, formes, taules, marcs de text, propietats del document, comentaris i exportació PPTX.
Aquest post fa un recorregut per la superfície de l’API central: les classes i mètodes que utilitzaràs més sovint quan construïx, formateis i guardes presentacions.
Què inclou?
Presentació i gestió de diapositives
El Presentation Creant una nova instància et dóna un diapositiu predeterminat que està immediatament preparat per al contingut. Accedeix a les diapes mitjançant el sistema de control d’imatge i la seva pàgina web. SlideCollection retornada per: slides(), que dóna suport a l’accés indexat, iteració, eliminació i reordenament.
#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);
Formes i AutoFormes
Cada diapositiva exposa una ShapeCollection a través de la seva shapes() La col·lecció proporciona mètodes de fabrica per afegir diferents tipus de formes: add_auto_shape per a formes geomètriques estàndards (rectangles, el·lipses, triangals), add_connector per a connectors de línia, add_table per a taules, i add_picture_frame per a imatges.
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);
El ShapeCollection també dóna suport a la size(), remove(), remove_at(), reorder(), index_of(), i clear() per gestionar formes després de la creació.
Formatatge de textos i paràgrafs
Les formes poden contenir text a través de: TextFrame.Utilitzar. add_text_frame() en un AutoShape per afegir contingut de text, o accedir al marc existent a través del sistema d’imatge. text_frame().El text està organitzat en paràgrafs, cadascun dels quals conté una o més parts. BasePortionFormat classe exposa propietats de l’estil de font incloent-hi en negrita, cursiva, tipus sotapuntat, capitalisme, puntuació i color de lletra.
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!"
Efectes de rellotge, gradient i visual
Cada forma proporciona una FillFormat accessibles a través de: fill_format().Podeu configurar rellens sòlids, llens de gradient o plens d’esquema a través del sistema. set_fill_type() El sistema de plens gradients es configura a través del mètode d’enllaç. GradientFormat objecte, que dóna suport a angles lineals, forma de gradient i colors s’atura 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);
El EffectFormat classe (accessible a través de effect_format()) afegeix efecte de brillantor, ombra exterior i bord suau.enable_glow_effect(), enable_outer_shadow_effect(), enable_soft_edge_effect()) i configurada a través del seu objecte retorn.
Taules
Les taules es creen amb: add_table() En la col·lecció de formes. Focalitza els amplors de columnes i altures de filas com a vectors. El retorn Table exposicions d’objectes rows() i de la columns() col·leccions, i individuals Cell Els objectes donen suport al contingut de text a través d’un sistema de codi. 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
Propietats i comentaris del document
El DocumentProperties class et permet configurar metadades com títol, autor, tema, paraules clau, categoria, número de revisió i timestamp. Accedeix-hi a través de l’objecte de presentació.
Els comentaris es gestionen a través de: CommentAuthorCollection i de la CommentCollection.Afegir els autors amb add_author(), després adjunta comentaris a diapositives específiques en coordenades específics.
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);
Inici ràpid
Construir des de l’origen
La biblioteca requereix CMake 3.20+ i un compilador compatible amb C++20. Clona el repositori i construeix:
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
Exemple mínim
#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;
}
Formats suportats
El SaveFormat enum defineix tots els objectius d’exportació. Els formats següents es confirmen al codi font:
| Format de la pàgina | Extensió | Llegeix. | Escriure |
|---|---|---|---|
| PPTX | .pptx | – | Sí, sí. |
| PPT | .ppt | – | Planificat |
| PPSX | .ppsx | – | Planificat |
| PPTM | .pptm | – | Planificat |
| PPSM | .ppsm | – | Planificat |
| POTX | .potx | – | Planificat |
| POTM | .potm | – | Planificat |
| POT | .pot | – | Planificat |
| PPS | .pps | – | Planificat |
| ODP | .odp | – | Planificat |
| OTP | .otp | – | Planificat |
| FODP | .fodp | – | Planificat |
| – | Planificat | ||
| XPS | .xps | – | Planificat |
| HTML | .html | – | Planificat |
| HTML5 | .html | – | Planificat |
| TIFF | .Tif. | – | Planificat |
| GIF | .gif | – | Planificat |
| SWF | .swf | – | Planificat |
| MD | .md | – | Planificat |
| XML | .xml | – | Planificat |
Nota: Actualment només s’implementa l’exportació PPTX. Existen altres valors de format en el sistema d’impressió i la seva configuració a través del programa de codi. SaveFormat enum per a la compatibilitat amb l’avantguarda, però encara no són funcionals. save() El mètode sempre produeix sortida PPTX independentment del paràmetre de format.
Fonte oberta i llicències
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.
Com començar a treballar
Preparats per integrar Aspose.Slides FOSS al teu projecte C++? Aquí teniu els recursos clau:
- Documentació: https://docs.aspose.org/slides/cpp/ per a guies de desenvolupadors, tutorials i descripcions conceptuals.
- Base de coneixement: https://kb.aspose.org/slides/cpp/ per a les FAQ i els articles d’instruccions que aborden tasques comunes.
- Referència a l’API: https://reference.aspose.org/slides/cpp/ per a la documentació de classe per classe de l’API pública completa.