Introducción
Aspose.Slides FOSS for C++ (aspose_slides_fossEs una biblioteca libre y de código abierto C++20 para crear y manipular presentaciones de PowerPoint programáticamente. Construida en todo el nativo C ++ con ninguna dependencia del tiempo de trabajo externo más allá de CMake 3.20+, ofrece a los desarrolladores un control completo sobre los archivos PPTX sin que se requiera Microsoft Office o cualquier software propiedad.
La biblioteca se libera bajo la licencia del MIT, lo que hace adecuado tanto para proyectos comerciales como no comercial. Aspose::Slides::Foss Namespace y proporciona un rico modelo de objetos que cubre presentaciones, rasgos, formas, tablas, cadros de texto, propiedades de documento, comentarios y exportación PPTX.
Este post pasa a través de la superficie API central: las clases y métodos que usará más a menudo cuando construye, formata y salva presentaciones.
Lo que está incluido
Presentación y gestión de slide
El Presentation clase es el punto de entrada. Crear una nueva instancia le da un slide por defecto que está pronto para el contenido inmediatamente. SlideCollection devuelto por slides(), que soporta acceso indexado, iteración, eliminación y reordenamiento.
#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);
Forma y autoformaciones
Cada disco muestra una ShapeCollection A través de su shapes() La colección proporciona métodos de fábrica para agregar diferentes tipos de forma: add_auto_shape para las formas geométricas estándar (rectangulos, elipsos, triángulos), add_connector para los conectores de línea, add_table para las mesas y add_picture_frame para las imágenes.
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 También apoya size(), remove(), remove_at(), reorder(), index_of(),y, clear() para la gestión de las formas después de la creación.
Formato de texto y parágrafo
Las formas pueden mantener el texto a través de TextFrame.Uso de add_text_frame() En un AutoShape para añadir contenido de texto, o acceder al marco existente a través del text_frame().El texto se organiza en párrafos, cada uno con una o más porciones. BasePortionFormat La clase exponerá propiedades de estilo de fontas, incluyendo el tipo audaz, italiano, sublime, capitalizador, estricto y color de la fontada.
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!"
Completo, Gradiente y Efectos Visuales
Cada forma proporciona una FillFormat Accesible a través de fill_format().Puedes establecer enchufes sólidos, enchaje gradiente o encharzos de patrón a través del set_fill_type() Los gradientes se configuran a través de la GradientFormat objeto, que soporta ángulos lineales, forma gradiente y paradas de color a través del 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 La clase (accesado a través de effect_format()Se añade el brillo, la sombra exterior y los efectos del borde suave. Cada efecto se habilita con un método dedicado (enable_glow_effect(), enable_outer_shadow_effect(), enable_soft_edge_effect()y configurado a través de su objeto devuelto.
Mesa de
Las mesas se crean con add_table() en la colección de formas. usted proporciona anchoas de columna y alturas en línea como vectores. Table Objetos de exposición rows() y columns() colecciones y individuales Cell Objetos que soportan contenido de texto a través de 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
Propiedades y comentarios de documentos
El DocumentProperties clase le permite establecer metadatos como título, autor, tema, palabras clave, categoría, número de revisión y timestamps.
Los comentarios se manejan a través de CommentAuthorCollection y CommentCollection.Añade a los autores con add_author(), luego añade comentarios a los rasgos específicos en las coordenadas específicas.
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);
Inicio rápido
Construido desde la fuente
La biblioteca requiere CMake 3.20+ y un compilador C++20-capable. Clone el repositorio y construye:
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
El mínimo ejemplo
#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;
}
Formatos apoyados
El SaveFormat Enum define todos los objetivos de exportación. Los siguientes formatos se confirman en el código fuente:
| Formato | Extensiones | Leer | Escribe |
|---|---|---|---|
| PPTX | .ptx | – | Sí |
| PPT | .ppt en | – | Planificado |
| PPSX | .px | – | Planificado |
| PPTM | .pptm en el | – | Planificado |
| PPSM | .ppsm en el | – | Planificado |
| POTX | .Póx | – | Planificado |
| POTM | .POTM | – | Planificado |
| POT | .POT | – | Planificado |
| PPS | .pps | – | Planificado |
| ODP | .odp | – | Planificado |
| OTP | .tp | – | Planificado |
| FODP | .FODP | – | Planificado |
| – | Planificado | ||
| XPS | .XPS | – | Planificado |
| HTML | .html en el | – | Planificado |
| HTML5 | .html en el | – | Planificado |
| TIFF | .TIFF | – | Planificado |
| GIF | .GIF | – | Planificado |
| SWF | .swf | – | Planificado |
| MD | .md | – | Planificado |
| XML | .xml de | – | Planificado |
Nota de: Actualmente sólo se implementa la exportación de PPTX. otros valores de formato existen en el SaveFormat enum para la compatibilidad de avance pero aún no funcionan. save() El método siempre produce la salida PPTX independientemente del parámetro de formato.
Open Source y Licenciación
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.
Empezando a
¿Estás dispuesto a integrar Aspose.Slides FOSS en tu proyecto C++? aquí están los recursos clave:
- Documentación: HTTPS://docs.aspose.org/slides/cpp/ en la página web de los datos para guías de desarrolladores, tutoriales y revisións conceptuales.
- Base de conocimientos: HTTPS://kb.aspose.org/slides/cpp/ en el sitio web de la compañía FAQs y artículos sobre cómo cubrir tareas comunes.
- El referente de API: HTTPS://referencia.aspose.org/slides/cpp/ para la documentación de clase a clase de la API pública completa.