Cómo cargar presentaciones en .NET
Aspose.Slides FOSS for .NET le permite abrir cualquier archivo .pptx, inspeccionar su contenido y guardarlo de nuevo en PPTX o extraer datos de él. Esta guía cubre la apertura de un archivo, la iteración de diapositivas, la lectura del texto de formas y el proceso de guardado de ida y vuelta.
Guía paso a paso
Paso 1: Instalar el paquete
dotnet add package Aspose.Slides.FossPaso 2: Abrir una presentación existente
Pase la ruta del archivo a new Presentation(). Utilice una declaración using para garantizar la limpieza.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation("input.pptx");
Console.WriteLine($"Slide count: {prs.Slides.Count}");
prs.Save("output.pptx", SaveFormat.Pptx);Las partes XML desconocidas en el archivo fuente se conservan literalmente: la biblioteca nunca elimina contenido que aún no comprende.
Paso 3: Inspeccionar diapositivas
Itera sobre todas las diapositivas e imprime su índice:
using Aspose.Slides.Foss;
using var prs = new Presentation("deck.pptx");
for (int i = 0; i < prs.Slides.Count; i++)
{
var slide = prs.Slides[i];
int shapeCount = slide.Shapes.Count;
Console.WriteLine($"Slide {i}: {shapeCount} shapes");
}Paso 4: Leer texto de forma
Iterar sobre las formas y leer el texto de las formas que tienen un TextFrame:
using Aspose.Slides.Foss;
using var prs = new Presentation("deck.pptx");
foreach (var slide in prs.Slides)
{
foreach (var shape in slide.Shapes)
{
if (shape is IAutoShape autoShape && autoShape.TextFrame != null)
{
string text = autoShape.TextFrame.Text;
if (!string.IsNullOrWhiteSpace(text))
Console.WriteLine($" Shape text: {text}");
}
}
}Paso 5: Leer propiedades del documento
Acceder a las propiedades principales del documento desde prs.DocumentProperties:
using Aspose.Slides.Foss;
using var prs = new Presentation("deck.pptx");
var props = prs.DocumentProperties;
Console.WriteLine($"Title: {props.Title}");
Console.WriteLine($"Author: {props.Author}");
Console.WriteLine($"Subject: {props.Subject}");Paso 6: Guardado de ida y vuelta
Después de inspeccionar o modificar la presentación, guárdala de nuevo en PPTX:
prs.Save("output.pptx", SaveFormat.Pptx);Guardar en una ruta diferente crea un nuevo archivo. Guardar en la misma ruta sobrescribe el original.
Problemas comunes y soluciones
FileNotFoundException
Verifique que la ruta al archivo .pptx sea correcta en relación con el directorio de trabajo. Use Path.Combine para una construcción de ruta robusta:
string path = Path.Combine(AppContext.BaseDirectory, "assets", "deck.pptx");
using var prs = new Presentation(path);Exception: File format is not supported
La biblioteca admite .pptx (Office Open XML) únicamente. Los archivos heredados .ppt (PowerPoint binario 97-2003) no son compatibles.
Las formas no tienen una propiedad TextFrame
Algunas formas (Connector, PictureFrame) no tienen un TextFrame. Convierta a IAutoShape y verifique que no sea nulo antes de acceder al texto.
Preguntas Frecuentes
¿La carga preserva todo el contenido original?
Sí. Las partes XML desconocidas se conservan literalmente al guardar en una ronda de ida y vuelta. La biblioteca no eliminará ningún contenido XML que aún no reconozca.
¿Puedo cargar un PPTX protegido con contraseña?
Las presentaciones protegidas con contraseña (cifradas) no son compatibles con esta edición.
¿Puedo extraer imágenes incrustadas?
Acceda a la colección de imágenes: prs.Images devuelve el ImageCollection. Cada imagen tiene propiedades para leer los datos de imagen sin procesar.
¿Se admite la carga desde un MemoryStream?
Sí. El constructor Presentation acepta un Stream:
using var stream = new MemoryStream(pptxBytes);
using var prs = new Presentation(stream);
Console.WriteLine($"Slides: {prs.Slides.Count}");