Indledning

Aspose.Slides FOSS for C++ (aspose_slides_foss) er et gratis, open-source C ++20 bibliotek til at oprette og manipulere PowerPoint præsentationer programmatisk. Det er bygget helt i indfødt C ++, uden eksterne runtime afhængigheder ud over CMake 3.20+. Det giver udviklere fuld kontrol over PPTX filer uden at kræve Microsoft Office eller nogen proprietær software.

Biblioteket er udgivet under MIT-licensen, hvilket gør det egnet til både kommercielle og ikke-kommercielt projekter. Det offentlige API lever i Aspose::Slides::Foss navnefeltet og giver en rig objektmodel der dækker præsentationer, diapositiver, former, tabeller, tekstrammer, dokumentegenskaber, kommentarer og PPTX eksport.

Denne artikel går gennem kernens API-overflade: de klasser og metoder, du vil bruge oftest ved opbygning, formatering og gemme præsentationer.


Hvad der indgår i den

Præsentation og slidesstyring

Den Presentation klasse er indgangspunktet. Ved at oprette en ny instans får du et standard-slide, der straks er klar til indholdet. Du har adgang til slides gennem den ̋SlideCollection⌒ returneres af ∂slides ((() ̨ , som understøtter indexeret adgang, iteration, fjernelse og 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 og Autostiller

Hver slide udstiller et `ShapeCollection ■ via dets accessor for ̋shapes ((() ̨. Samlingen indeholder fabrikksmetoder til at tilføje forskellige former: ∂add_auto_shapeˆ for standardgeometriske former (rektangler, ellipser og trekant), ゚add-connector› for linjekontaktører, ⌒add‐tableˆ i tabeller samt ゙add−picture฀frameˆ som billeder.

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

ShapeCollection understøtter også ̋size (() ̆, ∂remove ( (()) ̇, (゚removere at (), ≫reorder (͡°), (⌒index_of (τo) ) ̨ og (∂clear (≈) ̄ for styring af former efter oprettelse.

Tekst- og afsnitformater

Former kan indeholde tekst via TextFrame. Brug ̋add_text_frame() ̇ på et ∂AutoShape∂ til at vedhæfte tekstindhold, eller få adgang til den eksisterende ramme gennem ゚text _freme (). Teksten er organiseret i afsnit, der hver indeholder en eller flere dele. Klassen ̓BasePortionFormat∂ udstiller skrifttypeformningsegenskaber såsom fedtegnet, kursivt, underlinet type, kapitalskrifter, slagtråd og skriftfarve.

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

Fuld, graderet og visuelle effekter

Hver form giver et FillFormat, der er tilgængeligt via ̋fill_format ((() ̆. Du kan indstille faste fyldninger, gradientfyldinger eller mønsterfyldninger gennem metoden ∂set_fill__type (). Gradientfyllinger konfigureres via objektet ゚GradiantFormet⌒, som understøtter lineære vinkler, gradimentform og farvestopper via GredientStopCollection`.

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 (tilgås via ⌒effect_format()ヽ tilføjer glød, ydre skygge og bløde kanteffekter. Hver effekt aktiveres med en dedikeret metode (enable_glow_efpect (()), ̋enabile_outer_shadow_effects (()), ゚enaable_soft_edge_efect (().')) og konfigureres gennem dens returnerede objekt.

Tabeller

Tabeller oprettes med add_table() (') på formsamlingen. Du angives kolonnebredde og radhøjde som vektorer. Det returnerede objekt ̋Table udstiller kollektioner af ∂row (s) ̨ og ゚columns (ss), og individuelle objekter i cellen understøtter tekstindhold via textramme.

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

Dokumentegenskaber og kommentarer

Med klassen DocumentProperties kan du angive metadata som titel, forfatter, emne, søgeord, kategori, revisionnummer og tidsstempel. Tilgå den via præsentationsobjektet.

Du tilføjer forfattere med `add_author() ̋, og vedhæfter derefter kommentarer til bestemte slides på specifikke 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);

Hurtig start

Bygning fra grunden

Biblioteket kræver CMake 3.20+ og en C++20-kompatibel compiler. Kloner repository’et og opbyg:

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

Mindste eksempel

#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øttede formater

SaveFormat enum definerer alle eksportmål. Følgende formater bekræftes i kildekoden:

FormatExtensionReadWrite
PPTX.pptxYes
PPT.pptPlanned
PPSX.ppsxPlanned
PPTM.pptmPlanned
PPSM.ppsmPlanned
POTX.potxPlanned
POTM.potmPlanned
POT.potPlanned
PPS.ppsPlanned
ODP.odpPlanned
OTP.otpPlanned
FODP.fodpPlanned
PDF.pdfPlanned
XPS.xpsPlanned
HTML.htmlPlanned
HTML5.htmlPlanned
TIFF.tiffPlanned
GIF.gifPlanned
SWF.swfPlanned
MD.mdPlanned
XML.xmlPlanned

Bemærk: I øjeblikket er kun PPTX-eksport implementeret. Andre formatværdier findes i SaveFormatenum for fremadkompatibilitet, men de er endnu ikke funktionelle. Metoden ̋save()⌒ producerer altid PP TX udgang uanset formatparameteren.


Open Source & Licensing

Aspose.Slides FOSS for C++ er udgivet under MIT-licensen. Du kan bruge det frit i personlige projekter, kommercielle applikationer og omfordelte biblioteker. Der findes ingen API nøgler, vandmærker eller brugsbegrænsninger. Den fulde kildekode er tilgængelig på GitHub på https://github.com/aspose-slides-foss/Aspose.


Hvordan man begynder

Er du klar til at integrere Aspose.Slides FOSS i dit C++ projekt? Her er de vigtigste ressourcer: