Cómo crear presentaciones en .NET

Cómo crear presentaciones en .NET

Aspose.Slides FOSS for .NET le permite crear presentaciones de PowerPoint completamente en C# sin dependencia de Microsoft Office. Esta guía muestra cómo crear una nueva presentación, agregar diapositivas y formas, dar formato al texto y guardar el resultado.

Guía paso a paso

Paso 1: Instalar el paquete

Instale Aspose.Slides FOSS desde NuGet. Se requiere .NET 9.0 o posterior.

dotnet add package Aspose.Slides.Foss

Verifique la instalación:

using Aspose.Slides.Foss;

using var prs = new Presentation();
Console.WriteLine("Aspose.Slides FOSS ready");

No se requieren otros paquetes del sistema.


Paso 2: Importar los espacios de nombres requeridos

Agregue los espacios de nombres necesarios para crear y guardar presentaciones.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

Todas las constantes de tipo de forma se encuentran en Aspose.Slides.Foss.ShapeType. Todos los tipos de formato (FillType, NullableBool) también están en Aspose.Slides.Foss.


Paso 3: Crear una presentación

Utilice new Presentation() con una declaración using. Una nueva presentación comienza con una diapositiva en blanco.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
Console.WriteLine($"Slides in new presentation: {prs.Slides.Count}");
// work with prs
prs.Save("output.pptx", SaveFormat.Pptx);

Importante: Siempre use Presentation con una declaración using. La clase implementa IDisposable y los recursos no se liberarán correctamente sin ella.


Paso 4: Acceder a una diapositiva

La primera diapositiva está en el índice 0. Una presentación en blanco tiene exactamente una diapositiva.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];  // zero-based index
Console.WriteLine($"Slide at index 0: {slide}");
prs.Save("output.pptx", SaveFormat.Pptx);

Paso 5: Añadir una forma

Utilice slide.Shapes.AddAutoShape() para agregar una AutoShape. Los parámetros son (shapeType, x, y, width, height) todos en puntos (1 punto = 1/72 de pulgada; la diapositiva estándar es 720 x 540 pt).

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];

// Rectangle at (50, 50) with 400 wide and 120 tall
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 400, 120);

// Attach a text frame
shape.AddTextFrame("Hello from Aspose.Slides FOSS!");

prs.Save("with-shape.pptx", SaveFormat.Pptx);

Paso 6: Guardar la presentación

Llame a prs.Save(path, SaveFormat.Pptx) antes de que el objeto sea eliminado. PPTX es el único formato de salida compatible.

prs.Save("result.pptx", SaveFormat.Pptx);

El archivo se escribe de forma atómica; si ocurre un error antes de esta llamada, no se crea ningún archivo de salida.


Ejemplo completo y funcional

El siguiente programa crea una presentación de dos diapositivas con una forma de título en la primera diapositiva y una tabla en la segunda.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();

// --- Slide 1: title shape ---
var slide1 = prs.Slides[0];
var title = slide1.Shapes.AddAutoShape(ShapeType.Rectangle, 40, 40, 640, 80);
var tf = title.AddTextFrame("Q1 Results: Executive Summary");
var fmt = tf.Paragraphs[0].Portions[0].PortionFormat;
fmt.FontHeight = 32;
fmt.FontBold = NullableBool.True;
fmt.FillFormat.FillType = FillType.Solid;
fmt.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 0, 70, 127);

// --- Slide 2: table ---
prs.Slides.AddEmptySlide(prs.LayoutSlides[0]);
var slide2 = prs.Slides[1];
var table = slide2.Shapes.AddTable(40, 40,
    new double[] { 200.0, 120.0, 120.0 },
    new double[] { 40.0, 40.0, 40.0 });

string[] headers = { "Region", "Revenue", "Growth" };
string[][] data = {
    new[] { "North", "$1.2M", "+8%" },
    new[] { "South", "$0.9M", "+4%" },
};

for (int col = 0; col < headers.Length; col++)
    table.Rows[0][col].TextFrame.Text = headers[col];

for (int row = 0; row < data.Length; row++)
    for (int col = 0; col < data[row].Length; col++)
        table.Rows[row + 1][col].TextFrame.Text = data[row][col];

prs.Save("q1-results.pptx", SaveFormat.Pptx);
Console.WriteLine("Saved q1-results.pptx");

Problemas comunes y soluciones

ObjectDisposedException

Está utilizando el objeto Presentation después de que el bloque using haya finalizado. Todo el trabajo debe realizarse antes de que el objeto sea desechado.

Error de espacio de nombres faltante para ShapeType

Asegúrate de tener using Aspose.Slides.Foss; en la parte superior de tu archivo. ShapeType, NullableBool, FillType y otros enums están en este espacio de nombres.

SaveFormat excepto Pptx

Pasar cualquier valor SaveFormat distinto de SaveFormat.Pptx no lanza una excepción. El parámetro de formato se ignora silenciosamente y siempre se produce PPTX. Siempre use SaveFormat.Pptx para ser explícito.


Preguntas Frecuentes

¿Cuál es el tamaño de diapositiva predeterminado?

Un nuevo Presentation() crea diapositivas con el tamaño estándar de 10 × 7,5 pulgadas (720 × 540 puntos). Cambiar el tamaño de la diapositiva aún no es compatible en esta edición.

¿Puedo agregar más de una diapositiva?

Sí. Llame prs.Slides.AddEmptySlide(prs.LayoutSlides[0]) para agregar una diapositiva en blanco y acceder a ella por índice:

prs.Slides.AddEmptySlide(prs.LayoutSlides[0]);
var slide2 = prs.Slides[1];

¿Puedo abrir un archivo existente y añadir diapositivas?

Sí:

using var prs = new Presentation("existing.pptx");
prs.Slides.AddEmptySlide(prs.LayoutSlides[0]);
prs.Save("existing.pptx", SaveFormat.Pptx);

¿Qué formatos puedo guardar?

Solo SaveFormat.Pptx es compatible. La exportación a PDF, HTML, SVG o imágenes no está disponible en esta edición.


Ver también

 Español