Introducere

Aspose.Slides FOSS for C++ (aspose_slides_foss) este o bibliotecă C++20 gratuită, open-source pentru crearea și manipularea prezentărilor PowerPoint în mod programatic. Construit în întregime în C ++ nativ fără dependențe externe de timp de rulare dincolo de CMake 3.20 +, oferă dezvoltatorilor control complet asupra fișierelor PPTX fără a necesita Microsoft Office sau orice software proprietar.

Biblioteca este eliberată sub licența MIT, ceea ce o face potrivită atât pentru proiecte comerciale cât și non-comerciale. API publicul trăiește în sistemul de codare a aplicațiilor web. Aspose::Slides::Foss namespace și oferă un model de obiect bogat care acoperă prezentări, diapozitive, forme, tabele, cadre text, proprietăți ale documentelor, comentarii și export PPTX.

Acest post merge prin suprafața API de bază: clasele și metodele pe care le veți folosi cel mai des atunci când construiți, formatati și salvați prezentări.


Ce înseamnă?

Prezentare și gestionarea diapozitivelor

În ceea ce priveşte Presentation crearea unei noi instante vă oferă un diapozitiv implicit care este imediat gata pentru conținut. accesați diapositive prin intermediul SlideCollection returnată de: slides(), care susține accesul indexat, iterarea, eliminarea și reordonarea.

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

Forme și AutoForme

Fiecare diapozitiv expune o ShapeCollection prin intermediul său. shapes() Colecția oferă metode de fabricație pentru adăugarea diferitelor tipuri de forme: add_auto_shape pentru forme geometrice standard (rectangulare, elipsă, triunghi), add_connector pentru conectoarele de linie, add_table pentru tabele și add_picture_frame pentru imagini.

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

În ceea ce priveşte ShapeCollection susţine şi size(), remove(), remove_at(), reorder(), index_of(), și clear() pentru gestionarea formelor după creare.

Formatarea textului şi a paragrafelor

Formele pot deține text prin intermediul: TextFrame.- Foloseste-l . add_text_frame() pe o AutoShape pentru a atașa conținut de text sau să acceseze cadrul existent prin intermediul text_frame().Textul este organizat în paragrafe, fiecare conţinând una sau mai multe părţi. BasePortionFormat clasa expune proprietățile stilului de tip font, inclusiv grăsime, italic, tipul subliniat, capitalizare, strângere și culoarea fontului.

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

Efecte de umplere, gradiente și efecte vizuale

Fiecare formă oferă o FillFormat accesibil prin intermediul: fill_format().Puteţi seta umpluturi solide, gradiente sau modele prin intermediul sistemului de control. set_fill_type() Metodă de completare a gradientelor prin intermediul sistemului de calcul al gradului. GradientFormat obiect, care susține unghiuri liniare, forma gradientului și coloarea se oprește prin intermediul 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);

În ceea ce priveşte EffectFormat clasa (accesat prin intermediul effect_format()) adaugă efecte de strălucire, umbră exterioară și margini moi.enable_glow_effect(), enable_outer_shadow_effect(), enable_soft_edge_effect()) și configurate prin obiectul său returnat.

Tabelul 1

Tabelurile sunt create cu: add_table() În cazul în care nu există o formă de vector, atunci trebuie să fie prezentate dimensiunile ale coloanei. Table Obiectul expus rows() și de: columns() colectii, și individuale Cell Obiecte suport conținut de text prin intermediul 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

Proprietăți și comentarii ale documentului

În ceea ce priveşte DocumentProperties class vă permite să setați metadate cum ar fi titlul, autorul, subiectul , cuvintele cheie, categoria, numărul de revizuire și timestamp. Accesați-l prin obiectului prezentare .

Comentariile sunt gestionate prin intermediul: CommentAuthorCollection și de: CommentCollection.Adăugaţi autori cu: add_author(), apoi atașează comentarii la diapozitive specifice, cu coordonate specifique.

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

Început rapid

Construirea de la origini

Biblioteca necesită CMake 3.20+ și un compilator compatibil cu C++20. Clonați depozitul și construiți:

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

Exemplu minim

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

Formatele suportate

În ceea ce priveşte SaveFormat enum definește toate obiectivele de export. Următoarele formaturi sunt confirmate în codul sursă:

FormatulExtindereCiteşte.Scrie .
PPTX.pptxDa, sunt.
PPT.pptPlanificată
PPSX.ppsxPlanificată
PPTM.pptmPlanificată
PPSM.ppsmPlanificată
POTX.potxPlanificată
POTM.- Potm.Planificată
POT.potPlanificată
PPS.ppsPlanificată
ODP.odpPlanificată
OTP.otpPlanificată
FODP.fodpPlanificată
PDF.pdfPlanificată
XPS.xpsPlanificată
HTML.html (în limba engleză)Planificată
HTML5.html (în limba engleză)Planificată
TIFF.- Nu , nu .Planificată
GIF.gifPlanificată
SWF.swfPlanificată
MD.mdPlanificată
XML.xmlPlanificată

Notă: În prezent, este implementată doar exportul PPTX. Există alte valori de format în sistemele de date ale PCP și PSD. SaveFormat În plus, în cazul în care un sistem de securitate este disponibil pentru compatibilitate cu viitorul, nu există încă o soluţie funcţională. save() metoda produce întotdeauna ieșire PPTX, indiferent de parametrul formatului.


Open Source & Licențiere

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.


Cum să începem?

Sunteți gata să integrați Aspose.Slides FOSS în proiectul dvs. C++? Iată resursele cheie: