Introduction

Aspose.Slides FOSS for C++ (aspose_slides_foss) est une bibliothèque libre, open-source C++20 pour créer et manipuler les présentations PowerPoint de manière programmée. entièrement construit dans le C ++ natif avec aucune dépendance externe du temps de fonctionnement au-delà de CMake 3.20+, il donne aux développeurs un contrôle complet sur les fichiers PPTX sans nécessiter Microsoft Office ou tout logiciel propriétaire.

La bibliothèque est publiée sous la licence MIT, ce qui en fait une adaptation à des projets commerciaux et non-commerciaires. Aspose::Slides::Foss nomespace et fournit un modèle d’objet riche couvrant des présentations, des images, les formes, tables, cadres de texte, propriétés de document, commentaires et PPTX exportation.

Ce post passe par la surface de l’API cible : les classes et les méthodes que vous utilisez le plus souvent lors de la construction, du formatage et des présentations d’économie.


Ce qui est inclus

Présentation et gestion de la Slide

Le Presentation classe est le point d’entrée. Créer une nouvelle instance vous donne un slide par défaut qui est immédiatement prêt pour le contenu. Vous accéder des slides à travers la SlideCollection Retourné par slides(), qui soutient l’accès indexé, l’itération, la suppression et le re-ordre.

#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 et AutoShapes

Chaque écran expose une ShapeCollection Par son shapes() La collection fournit des méthodes de fabrication pour ajouter différents types de formes: add_auto_shape pour les formes géométriques standard (rectangles, ellipses, triangle), add_connector pour les connecteurs, add_table pour les tables, et add_picture_frame pour les images.

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

Le ShapeCollection Il soutient aussi size(), remove(), remove_at(), reorder(), index_of(),et clear() Pour gérer les formes après la création.

Textes et paragraphes de formatage

Les textes peuvent être conservés par TextFrame.Utiliser add_text_frame() sur un AutoShape pour ajouter du contenu texte, ou accéder au cadre existant par le biais de text_frame().Le texte est organisé en paragraphes, chacune contenant une ou plusieurs portions. BasePortionFormat La classe expose les propriétés de style des lettres, y compris le courageux, l’italien, le type sous-lignant, la capitalisation, strictough et la couleur des fonctions.

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

Fill, Gradient et Effets visuels

Chaque forme fournit un FillFormat accessible par fill_format().Vous pouvez définir des remplissages solides, les gradients ou les modèles de remplies à travers le set_fill_type() Les gradients sont configurés à travers le GradientFormat objet, qui soutient les angles linéaires, la forme gradiente et les stops de couleur par le biais du 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);

Le EffectFormat Classement (accédé par le biais de effect_format()(Accueil) : L’effet de l’écran est actif et chaque effet est activé par une méthode dédiée (enable_glow_effect(), enable_outer_shadow_effect(), enable_soft_edge_effect()et configure par son objet retourné.

Tableau

Des tables sont créées avec add_table() sur la collection de formes. vous fournissez des largeurs de colonne et les hauteurs d’ordre en tant que vecteurs. Table Objet exposé rows() et columns() collections et individuelles Cell Objets supportant le contenu texte 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

Propriétés et commentaires de document

Le DocumentProperties classe vous permet de définir des métadonnées telles que le titre, l’auteur, le sujet, les mots-clés, la catégorie, numéro de révision et les timestamps.

Les commentaires sont gérés par CommentAuthorCollection et CommentCollection.Vous ajoutez des auteurs avec add_author(), puis ajouter des commentaires à des slides spécifiques dans des coordonnées spéciaux.

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

Démarrage rapide

Construire de la source

La bibliothèque nécessite un CMake 3.20+ et un compilateur capable C++20. Clonnez le répertoire et construisez:

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 minimum

#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 soutenus

Le SaveFormat enum définit tous les objectifs d’exportation. Les formats suivants sont confirmés dans le code source:

FormatsExtensionLireÉcrire
PPTX.pptxOui
PPT.PtPlanifié
PPSX.ppsxPlanifié
PPTM.pptmPlanifié
PPSM.PPSMPlanifié
POTX.Le PotxPlanifié
POTM.Le POTMPlanifié
POT.Le PotPlanifié
PPS.ppsPlanifié
ODP.ODPPlanifié
OTP.OTPPlanifié
FODP.FODPPlanifié
PDF.pdfPlanifié
XPS.xpsPlanifié
HTML.htmlPlanifié
HTML5.htmlPlanifié
TIFF.TIFFPlanifié
GIF.GIFPlanifié
SWF.swfPlanifié
MD.MdPlanifié
XML.xmlPlanifié

Note : Actuellement, seuls les exportations PPTX sont mises en œuvre. d’autres valeurs de format existent dans le SaveFormat enum pour la compatibilité à l’avant mais ne sont pas encore fonctionnels. save() Le méthode produit toujours la sortie PPTX, quel que soit le paramètre du format.


Source ouverte et licence

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.


Pour commencer

Prêt à intégrer Aspose.Slides FOSS dans votre projet C++? Voici les ressources clés:

Ressources associées