crear presentaciones de powerpoint C++

MS PowerPoint es una aplicación rica en funciones que le permite crear presentaciones atractivas con texto, gráficos, animaciones, tablas y varios otros elementos. En esta publicación, aprenderá cómo implementar las funciones básicas de automatización de PowerPoint dentro de las aplicaciones de C++. En particular, llegará a saber cómo crear presentaciones de PowerPoint y agregar texto, imágenes, gráficos y tablas a las diapositivas usando C++.

API de PowerPoint de C++

Aspose.Slides for C++ está diseñado para automatizar las funciones de manipulación de presentaciones de PowerPoint dentro de las aplicaciones de C++. Con la API, puede crear, editar o convertir las presentaciones de PowerPoint sin problemas. Puede descargar el paquete completo de los archivos API u obtenerlo de NuGet.

Crear una presentación de PowerPoint en C++

Comencemos por crear una presentación de PowerPoint vacía usando Aspose.Slides for C++. Los siguientes son los pasos para realizar esta operación.

El siguiente ejemplo de código muestra cómo crear una presentación de PowerPoint usando C++.

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C

	// La ruta al directorio de documentos.
	const String outPath = u"../out/SampleChartresult.pptx";

	//Instanciar la clase de presentación que representa el archivo PPTX
	SharedPtr<Presentation> pres = MakeObject<Presentation>();
	
	SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

	// Agregar una forma automática de línea de tipo
	slide->get_Shapes()->AddAutoShape(Aspose::Slides::ShapeType::Line, 50.0, 150.0, 300.0, 0.0);
	
	//Guardar presentación
	pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Agregar diapositiva a una presentación en C++

Una vez que haya creado la presentación de PowerPoint, puede insertar diapositivas en ella. Los siguientes son los pasos para agregar diapositivas a una presentación de PowerPoint:

El siguiente ejemplo de código muestra cómo agregar diapositivas a una presentación de PowerPoint usando C++.

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C

	// La ruta al directorio de documentos.
	const String outPath = u"../templates/AddSlides.pptx";

	// Instanciar clase de presentación que representa el archivo de presentación
	SharedPtr<Presentation> pres = MakeObject<Presentation>();

	// Crear una instancia de SlideCollection calss
	SharedPtr<ISlideCollection> slds = pres->get_Slides();

	for (int i = 0; i < pres->get_LayoutSlides()->get_Count(); i++)
	{
		// Agregar una diapositiva vacía a la colección Diapositivas
		slds->AddEmptySlide(pres->get_LayoutSlides()->idx_get(i));

	}

	// Guarde el archivo PPTX en el disco
	pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Para obtener más información sobre la manipulación de diapositivas, visite Agregar, formatear y manipular diapositivas.

Agregar texto a una diapositiva de PowerPoint usando C++

Ahora, agreguemos texto a una diapositiva en la presentación de PowerPoint. Para ello, debe insertar un cuadro de texto en la diapositiva. A continuación se detallan los pasos para realizar esta operación.

El siguiente ejemplo de código muestra cómo agregar texto a las diapositivas en una presentación de PowerPoint usando C++.

// La ruta al directorio de documentos.
const String outPath = u"../out/TextBoxOnSlideProgram_out.pptx";
const String templatePath = u"../templates/DefaultFonts_out.pptx";

// Cargue la presentación deseada
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Acceder a la primera diapositiva
SharedPtr<ISlide> sld = pres->get_Slides()->idx_get(0);

// Agregar una autoforma de tipo rectángulo
SharedPtr<IAutoShape>  ashp = sld->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 150, 75, 150, 50);

// Añadir TextFrame al Rectángulo
ashp->AddTextFrame(u" ");

// Acceso al marco de texto
SharedPtr<ITextFrame>  txtFrame = ashp->get_TextFrame();

// Crear el objeto Párrafo para marco de texto
SharedPtr<IParagraph> paragraph = txtFrame->get_Paragraphs()->idx_get(0);

// Crear objeto de porción para párrafo
SharedPtr<IPortion> portion = paragraph->get_Portions()->idx_get(0);
portion->set_Text(u"Aspose TextBox");
	
// Guardar PPTX en disco
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Para obtener más información sobre la manipulación de texto en presentaciones, visite Agregar, formatear y manipular texto.

Crear una tabla en presentación usando C++

Los siguientes son los pasos para agregar una tabla en la diapositiva de una presentación de PowerPoint usando Aspose.Slides for C++.

  • Cree una instancia de una clase Presentation.
  • Obtener la referencia de una diapositiva en un objeto ISlide.
  • Defina matrices de columnas y filas proporcionando el ancho.
  • Agregue una tabla a la diapositiva usando el método ISlide->getShapes()->AddTable().
  • Recorra cada celda para aplicar formato a los bordes superior, inferior, derecho e izquierdo.
  • Combinar celdas si es necesario.
  • Acceda al marco de texto de una celda para agregar texto.
  • Guarde la presentación como un archivo PPTX.

El siguiente ejemplo de código muestra cómo crear una tabla en una presentación de PowerPoint usando C++.

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// La ruta al directorio de documentos.
const String outPath = u"../out/TableFromScratch_out.pptx";

// Cargue la presentación deseada
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Acceder a la primera diapositiva
SharedPtr<ISlide> islide = pres->get_Slides()->idx_get(0);

// Definir columnas con anchos y filas con alturas
System::ArrayPtr<double> dblCols = System::MakeObject<System::Array<double>>(4, 70);
System::ArrayPtr<double> dblRows = System::MakeObject<System::Array<double>>(4, 70);

// Agregar forma de tabla a la diapositiva
SharedPtr<ITable> table = islide->get_Shapes()->AddTable(100, 50, dblCols, dblRows);


// Establecer formato de borde para cada celda
for (int x = 0; x < table->get_Rows()->get_Count(); x++)
{
	SharedPtr<IRow> row = table->get_Rows()->idx_get(x);
	for (int y = 0; y < row->get_Count(); y++)
	{
		SharedPtr<ICell> cell = row->idx_get(y);

		cell->get_BorderTop()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderTop()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderTop()->set_Width(5);

		cell->get_BorderBottom()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderBottom()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderBottom()->set_Width(5);

		cell->get_BorderLeft()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderLeft()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderLeft()->set_Width(5);

		cell->get_BorderRight()->get_FillFormat()->set_FillType(FillType::Solid);
		cell->get_BorderRight()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
		cell->get_BorderRight()->set_Width(5);

	}

}

// Combinar celdas (1, 1) x (2, 1)
table->MergeCells(table->idx_get(1, 1), table->idx_get(2, 1), false);

// Combinar celdas (1, 2) x (2, 2)
table->MergeCells(table->idx_get(1, 2), table->idx_get(2, 2), false);


// Guardar PPTX en disco
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Para obtener más información sobre cómo manipular las tablas, visite Agregar, actualizar y manipular tablas.

Crear un gráfico en presentación usando C++

Aspose.Slides for C++ admite varios tipos de gráficos, como dispersos, de mapa de árbol, histograma y etc. Para la demostración, creemos un gráfico normal. A continuación se detallan los pasos para realizar esta operación.

  • Cree una instancia de la clase Presentation.
  • Obtenga la referencia de una diapositiva en la que desea agregar el gráfico.
  • Agregue un gráfico con datos predeterminados junto con el tipo deseado usando el método ISlide->getShapes()->AddChart().
  • Obtenga la referencia del gráfico en el objeto IChart.
  • Borre los datos del gráfico y agregue nuevas series y categorías.
  • Agregue nuevos datos de gráficos para series de gráficos.
  • Establezca el color de relleno para la serie de gráficos.
  • Agregue etiquetas de series de gráficos.
  • Guarde la presentación como un archivo PPTX.

El siguiente ejemplo de código muestra cómo insertar un gráfico en una presentación de PowerPoint usando C++.

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C

	// La ruta al directorio de documentos.
	const String outPath = u"../out/NormalCharts_out.pptx";

	//Instanciar la clase de presentación que representa el archivo PPTX
	SharedPtr<Presentation> pres = MakeObject<Presentation>();

	//Acceder a la primera diapositiva
	SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

	// Agregar gráfico con datos predeterminados
	SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);


	// Configuración del índice de la hoja de datos del gráfico
	int defaultWorksheetIndex = 0;

	// Obtener la hoja de trabajo de datos del gráfico
	SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

	// Tabla de configuración Título
	chart->get_ChartTitle()->AddTextFrameForOverriding(u"Sample Title");
	chart->get_ChartTitle()->get_TextFrameForOverriding()->get_TextFrameFormat()->set_CenterText ( NullableBool::True);
	chart->get_ChartTitle()->set_Height(20);
	chart->set_HasTitle( true);

	// Eliminar series y categorías generadas por defecto
	chart->get_ChartData()->get_Series()->Clear();
	chart->get_ChartData()->get_Categories()->Clear();
	int s = chart->get_ChartData()->get_Series()->get_Count();
	s = chart->get_ChartData()->get_Categories()->get_Count();


	// Ahora, agregando una nueva serie
	chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 1, ObjectExt::Box<System::String>(u"Series 1")), chart->get_Type());
	chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 2, ObjectExt::Box<System::String>(u"Series 2")), chart->get_Type());

	// Añadir categorías
	chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 1, 0, ObjectExt::Box<System::String>(u"Caetegoty 1")));
	chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 2, 0, ObjectExt::Box<System::String>(u"Caetegoty 2")));
	chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 3, 0, ObjectExt::Box<System::String>(u"Caetegoty 3")));

	
	// Tomar la primera serie de gráficos
	SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

	// Ahora llenando datos de series
	series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 1, 1, ObjectExt::Box<double>(20)));
	series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(50)));
	series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(30)));

	// Configuración del color de relleno para la serie
	series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
	series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());


	// Tome la segunda serie de gráficos
	 series = chart->get_ChartData()->get_Series()->idx_get(1);

	// Ahora llenando datos de series
	series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 1, 2, ObjectExt::Box<double>(30)));
	series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 2, 2, ObjectExt::Box<double>(10)));
	series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 3, 2, ObjectExt::Box<double>(60)));

	// Configuración del color de relleno para la serie
	series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
	series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Green());


	// La primera etiqueta mostrará el nombre de la categoría
	SharedPtr<IDataLabel> lbl = series->get_DataPoints()->idx_get(0)->get_Label();
	lbl->get_DataLabelFormat()->set_ShowCategoryName(true);

	lbl = series->get_DataPoints()->idx_get(1)->get_Label();
	lbl->get_DataLabelFormat()->set_ShowSeriesName (true);

	// Mostrar valor para la tercera etiqueta
	lbl = series->get_DataPoints()->idx_get(2)->get_Label();
	lbl->get_DataLabelFormat()->set_ShowValue (true);
	lbl->get_DataLabelFormat()->set_ShowSeriesName(true);
	lbl->get_DataLabelFormat()->set_Separator (u"/");

	// Escribir el archivo de presentación en el disco
	pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Obtenga más información sobre la manipulación de gráficos en Agregar, formatear y manipular gráficos.

Abrir una presentación de PowerPoint en C++

También puede abrir una presentación de PowerPoint existente para editar el contenido. Para esto, puede seguir los siguientes pasos:

El siguiente ejemplo de código muestra cómo abrir una presentación de PowerPoint existente usando C++.

// La ruta al directorio de documentos.
const String templatePath = u"../templates/AccessSlides.pptx";

// Instanciar la clase de presentación que representa el archivo PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

// Imprimir recuento de diapositivas
printf("Total slides inside presentation are : %d\n", pres->get_Slides()->get_Count());

Obtenga una licencia gratis

Puede obtener una licencia temporal gratuita para probar la API sin limitaciones de evaluación.

Conclusión

En este artículo, ha aprendido a crear presentaciones de PowerPoint desde las aplicaciones de C++. La guía paso a paso y los ejemplos de código junto con las referencias de la API han mostrado cómo crear una presentación desde cero e insertar diapositivas, texto, tablas y gráficos en ella. Puede explorar más sobre la API utilizando la documentación.

Ver también