Fonctionnalités et capacités
Fonctionnalités et capacités
Aspose.Slides FOSS for C++ provides a broad set of capabilities for working with PowerPoint .pptx fichiers de manière programmatique. Cette page répertorie toutes les zones de fonctionnalités prises en charge avec des exemples de code représentatifs.
Entrée/Sortie de présentation
Ouvrez un existant .pptx fichier ou créez‑en un nouveau, puis enregistrez‑le au format PPTX.
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <iostream>
using namespace Aspose::Slides::Foss;
int main() {
// Open an existing presentation
{
Presentation pres("input.pptx");
std::cout << "Slide count: " << pres.slides().size() << std::endl;
pres.save("output.pptx", SaveFormat::PPTX);
}
// Create a new presentation (starts with one blank slide)
{
Presentation pres;
pres.save("new.pptx", SaveFormat::PPTX);
}
return 0;
}Remarque : PPTX est le seul format d’enregistrement pris en charge. L’exportation vers PDF, HTML, SVG ou des images n’est pas disponible.
Les parties XML inconnues du fichier source sont conservées mot pour mot lors de l’enregistrement, de sorte qu’ouvrir et réenregistrer un .pptx ne supprimera jamais le contenu que la bibliothèque ne comprend pas encore.
Gestion des diapositives
Ajoutez, supprimez, clonez et réorganisez les diapositives.
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/layout_slide.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <iostream>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
// Access the first slide
auto& slide = pres.slides()[0];
// Add an additional blank slide at the end
auto* layout = dynamic_cast<ILayoutSlide*>(&pres.layout_slides()[0]);
pres.slides().add_empty_slide(layout);
std::cout << "Total slides: " << pres.slides().size() << std::endl;
pres.save("multi-slide.pptx", SaveFormat::PPTX);
return 0;
}Formes
Ajoutez des AutoShapes, des PictureFrames, des Tableaux et des Connecteurs à une diapositive.
AutoShapes
#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
auto& slide = pres.slides()[0];
// Add a rectangle at (x=50, y=50) with width=300, height=100
auto& shape = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 50, 50, 300, 100);
shape.text_frame()->set_text("Aspose.Slides FOSS");
pres.save("shapes.pptx", SaveFormat::PPTX);
return 0;
}Tableaux
#include <Aspose/Slides/Foss/cell.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/row.h>
#include <Aspose/Slides/Foss/row_collection.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/table.h>
#include <Aspose/Slides/Foss/text_frame.h>
#include <vector>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
auto& slide = pres.slides()[0];
// Column widths and row heights in points
std::vector<double> col_widths = {120.0, 120.0, 120.0};
std::vector<double> row_heights = {40.0, 40.0, 40.0};
auto& table = slide.shapes().add_table(50, 50, col_widths, row_heights);
table.rows()[0][0].text_frame()->set_text("Product");
table.rows()[0][1].text_frame()->set_text("Quantity");
table.rows()[0][2].text_frame()->set_text("Price");
pres.save("table.pptx", SaveFormat::PPTX);
return 0;
}Connecteurs
#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/connector.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
auto& slide = pres.slides()[0];
auto& box1 = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 50, 100, 150, 60);
auto& box2 = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 350, 100, 150, 60);
auto& conn = slide.shapes().add_connector(ShapeType::BENT_CONNECTOR3, 0, 0, 10, 10);
conn.set_start_shape_connected_to(&box1);
conn.set_start_shape_connection_site_index(3); // right side
conn.set_end_shape_connected_to(&box2);
conn.set_end_shape_connection_site_index(1); // left side
pres.save("connector.pptx", SaveFormat::PPTX);
return 0;
}Mise en forme du texte
Formatez le texte au niveau du paragraphe et du caractère en utilisant PortionFormat.
#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/nullable_bool.h>
#include <Aspose/Slides/Foss/paragraph.h>
#include <Aspose/Slides/Foss/paragraph_collection.h>
#include <Aspose/Slides/Foss/portion.h>
#include <Aspose/Slides/Foss/portion_collection.h>
#include <Aspose/Slides/Foss/portion_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>
using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;
int main() {
Presentation pres;
auto& slide = pres.slides()[0];
auto& shape = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 50, 50, 500, 150);
shape.text_frame()->set_text("Bold blue heading");
auto& fmt = shape.text_frame()->paragraphs()[0].portions()[0].portion_format();
fmt.set_font_height(28);
fmt.set_font_bold(NullableBool::TRUE);
fmt.fill_format().set_fill_type(FillType::SOLID);
fmt.fill_format().solid_fill_color().set_color(Color::from_argb(255, 0, 70, 127));
pres.save("text.pptx", SaveFormat::PPTX);
return 0;
}NullableBool::TRUE définit la propriété explicitement ; NullableBool::NOT_DEFINED hérite du masque de diapositive.
Types de remplissage
Appliquez des remplissages plein, dégradé, motif ou image aux formes.
#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;
int main() {
Presentation pres;
auto& slide = pres.slides()[0];
auto& shape = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 50, 50, 300, 150);
// Solid fill
shape.fill_format().set_fill_type(FillType::SOLID);
shape.fill_format().solid_fill_color().set_color(Color::from_argb(255, 30, 120, 200));
pres.save("fill.pptx", SaveFormat::PPTX);
return 0;
}Effets visuels
Appliquez une ombre externe, une lueur, un bord doux, un flou, un reflet et une ombre interne aux formes.
Les propriétés d’effet sont accessibles via shape.effect_format(). Les sous-objets renvoyés par outer_shadow_effect(), glow_effect(), et des méthodes similaires sont pointeurs — appelez‑les avec ->.
#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/effect_format.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;
int main() {
Presentation pres;
auto& slide = pres.slides()[0];
auto& shape = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 100, 100, 200, 100);
auto& ef = shape.effect_format();
// Outer drop shadow
ef.enable_outer_shadow_effect();
auto* shadow = ef.outer_shadow_effect();
shadow->set_blur_radius(10);
shadow->set_direction(315);
shadow->set_distance(8);
shadow->shadow_color().set_color(Color::from_argb(128, 0, 0, 0));
// Glow effect
ef.enable_glow_effect();
auto* glow = ef.glow_effect();
glow->set_radius(15);
glow->color().set_color(Color::from_argb(200, 255, 200, 0));
pres.save("effects.pptx", SaveFormat::PPTX);
return 0;
}3D Formatting
Appliquer un biseau 3D, une caméra, un dispositif d’éclairage, un matériau et une profondeur d’extrusion via shape.three_d_format(). Cela contrôle la profondeur visuelle et le modèle d’éclairage pour le rendu des formes dans les visionneuses PPTX qui prennent en charge les effets 3D.
#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/bevel_preset_type.h>
#include <Aspose/Slides/Foss/camera_preset_type.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/light_rig_preset_type.h>
#include <Aspose/Slides/Foss/lighting_direction.h>
#include <Aspose/Slides/Foss/material_preset_type.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/three_d_format.h>
using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;
int main() {
Presentation pres;
auto& slide = pres.slides()[0];
auto& shape = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 100, 100, 200, 100);
shape.fill_format().set_fill_type(FillType::SOLID);
shape.fill_format().solid_fill_color().set_color(Color::from_argb(255, 20, 70, 160));
auto& tdf = shape.three_d_format();
tdf.bevel_top().set_bevel_type(BevelPresetType::CIRCLE);
tdf.bevel_top().set_width(10);
tdf.bevel_top().set_height(5);
tdf.camera().set_camera_type(CameraPresetType::PERSPECTIVE_ABOVE);
tdf.light_rig().set_light_type(LightRigPresetType::BALANCED);
tdf.light_rig().set_direction(LightingDirection::TOP);
tdf.set_depth(20);
tdf.set_material(MaterialPresetType::METAL);
pres.save("3d.pptx", SaveFormat::PPTX);
return 0;
}Notes du présentateur
Attacher des notes à n’importe quelle diapositive en utilisant notes_slide_manager().
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/i_notes_slide.h>
#include <Aspose/Slides/Foss/i_notes_slide_manager.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
auto* notes = pres.slides()[0].notes_slide_manager().add_notes_slide();
notes->notes_text_frame().set_text("Key talking point: emphasize the ROI benefit.");
pres.save("notes.pptx", SaveFormat::PPTX);
return 0;
}Commentaires
Ajoutez des commentaires en fil avec les informations de l’auteur et la position de la diapositive.
#include <Aspose/Slides/Foss/comment.h>
#include <Aspose/Slides/Foss/comment_author.h>
#include <Aspose/Slides/Foss/comment_author_collection.h>
#include <Aspose/Slides/Foss/comment_collection.h>
#include <Aspose/Slides/Foss/drawing/point_f.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <chrono>
using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;
int main() {
Presentation pres;
auto& author = pres.comment_authors().add_author("Jane Smith", "JS");
auto& slide = pres.slides()[0];
author.comments().add_comment(
"Please verify this data before the presentation.",
slide,
PointF(2.0f, 2.0f),
std::chrono::system_clock::now()
);
pres.save("comments.pptx", SaveFormat::PPTX);
return 0;
}Images intégrées
Intégrer une image depuis un fichier dans la présentation et l’ajouter à une diapositive en tant que PictureFrame.
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/image_collection.h>
#include <Aspose/Slides/Foss/picture_frame.h>
#include <Aspose/Slides/Foss/pp_image.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <fstream>
#include <iterator>
#include <vector>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
// Read image bytes from file
std::ifstream f("logo.png", std::ios::binary);
std::vector<std::uint8_t> data(
(std::istreambuf_iterator<char>(f)),
std::istreambuf_iterator<char>());
auto& img = pres.images().add_image(data);
pres.slides()[0].shapes().add_picture_frame(
ShapeType::RECTANGLE, 50, 50, 200, 150, img);
pres.save("with-image.pptx", SaveFormat::PPTX);
return 0;
}Propriétés du document
Lisez et écrivez les propriétés de document de base, d’application et personnalisées.
#include <Aspose/Slides/Foss/document_properties.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <any>
#include <string>
using namespace Aspose::Slides::Foss;
int main() {
Presentation pres;
auto& props = pres.document_properties();
// Core properties
props.set_title("Q1 Results");
props.set_author("Finance Team");
props.set_subject("Quarterly Review");
props.set_keywords("Q1, finance, results");
// Custom property
props.set_custom_property_value("ReviewedBy", std::any(std::string("Legal Team")));
pres.save("deck.pptx", SaveFormat::PPTX);
return 0;
}Limitations connues
Les sections suivantes ne sont pas disponibles dans cette édition :
| Zone | Statut |
|---|---|
| Graphiques | Non implémenté |
| SmartArt | Non implémenté |
| Animations et transitions | Non implémenté |
| Export PDF / HTML / SVG / image | Non implémenté (PPTX uniquement) |
| Macros VBA | Non implémenté |
| Signatures numériques | Non implémenté |
| Hyperliens et paramètres d’action | Non implémenté |
| Objets OLE | Non implémenté |
| Texte mathématique | Non implémenté |
Voir aussi
- Premiers pas: Installation et premier programme
- Référence de l’API: Référence des classes et méthodes
- Guides pratiques: Articles orientés tâches