Crear un visor de presentaciones en C#
Visión general
Aspose.Slides para .NET se utiliza para crear archivos de presentación con diapositivas. Estas diapositivas pueden verse abriendo las presentaciones en Microsoft PowerPoint, por ejemplo. Sin embargo, los desarrolladores a veces pueden necesitar ver las diapositivas como imágenes en su visor de imágenes preferido o utilizarlas en un visor de presentaciones personalizado. En esos casos, Aspose.Slides le permite exportar diapositivas individuales como imágenes. Este artículo explica cómo hacerlo.
Generar una imagen SVG a partir de una diapositiva
Para generar una imagen SVG a partir de una diapositiva de una presentación usando Aspose.Slides, siga los pasos a continuación:
- Cree una instancia de la clase Presentation.
- Obtenga una referencia a la diapositiva por su índice.
- Abra un flujo de archivo.
- Guarde la diapositiva como una imagen SVG en el flujo de archivo.
int slideIndex = 0;
using (Presentation presentation = new Presentation("sample.pptx"))
{
ISlide slide = presentation.Slides[slideIndex];
using (FileStream svgStream = File.Create("output.svg"))
{
slide.WriteAsSvg(svgStream);
}
}
Generar un SVG con un ID de forma personalizado
Aspose.Slides se puede usar para generar un SVG a partir de una diapositiva con un ID de forma personalizado. Para lograrlo, use la propiedad Id de la interfaz ISvgShape. La clase CustomSvgShapeFormattingController se puede usar para establecer el ID de la forma.
int slideIndex = 0;
using (Presentation presentation = new Presentation("sample.odp"))
{
ISlide slide = presentation.Slides[slideIndex];
SVGOptions svgOptions = new SVGOptions
{
ShapeFormattingController = new CustomSvgShapeFormattingController()
};
using (FileStream svgStream = File.Create("output.svg"))
{
slide.WriteAsSvg(svgStream, svgOptions);
}
}
class CustomSvgShapeFormattingController : ISvgShapeFormattingController
{
private int m_shapeIndex;
public CustomSvgShapeFormattingController(int shapeStartIndex = 0)
{
m_shapeIndex = shapeStartIndex;
}
public void FormatShape(ISvgShape svgShape, IShape shape)
{
svgShape.Id = string.Format("shape-{0}", m_shapeIndex++);
}
}
Crear una imagen miniatura de diapositiva
Aspose.Slides le ayuda a generar imágenes en miniatura de diapositivas. Para generar una miniatura de una diapositiva usando Aspose.Slides, siga los pasos a continuación:
- Cree una instancia de la clase Presentation.
- Obtenga una referencia a la diapositiva por su índice.
- Cree una imagen en miniatura de la diapositiva referenciada con la escala deseada.
- Guarde la imagen en miniatura en el formato de imagen que prefiera.
int slideIndex = 0;
float scaleX = 1;
float scaleY = scaleX;
using (Presentation presentation = new Presentation("sample.pptx"))
{
ISlide slide = presentation.Slides[slideIndex];
using (IImage image = slide.GetImage(scaleX, scaleY))
{
image.Save("output.jpg", ImageFormat.Jpeg);
}
}
Crear una miniatura de diapositiva con dimensiones definidas por el usuario
Para crear una imagen miniatura de diapositiva con dimensiones definidas por el usuario, siga los pasos a continuación:
- Cree una instancia de la clase Presentation.
- Obtenga una referencia a la diapositiva por su índice.
- Genere una imagen en miniatura de la diapositiva referenciada con las dimensiones especificadas.
- Guarde la imagen en miniatura en el formato de imagen que prefiera.
int slideIndex = 0;
Size slideSize = new Size(1200, 800);
using (Presentation presentation = new Presentation("sample.odp"))
{
ISlide slide = presentation.Slides[slideIndex];
using (IImage image = slide.GetImage(slideSize))
{
image.Save("output.jpg", ImageFormat.Jpeg);
}
}
Crear una miniatura de diapositiva con notas del presentador
Para generar una miniatura de una diapositiva con notas del presentador usando Aspose.Slides, siga los pasos a continuación:
- Cree una instancia de la clase RenderingOptions.
- Utilice la propiedad
RenderingOptions.SlidesLayoutOptionspara establecer la posición de las notas del presentador. - Cree una instancia de la clase Presentation.
- Obtenga una referencia a la diapositiva por su índice.
- Genere una imagen en miniatura de la diapositiva referenciada usando las opciones de renderizado.
- Guarde la imagen en miniatura en el formato de imagen que prefiera.
int slideIndex = 0;
RenderingOptions renderingOptions = new RenderingOptions
{
SlidesLayoutOptions = new NotesCommentsLayoutingOptions
{
NotesPosition = NotesPositions.BottomTruncated
}
};
using (Presentation presentation = new Presentation("sample.pptx"))
{
ISlide slide = presentation.Slides[slideIndex];
using (IImage image = slide.GetImage(renderingOptions))
{
image.Save("output.png", ImageFormat.Png);
}
}
Ejemplo en vivo
Pruebe la aplicación gratuita Aspose.Slides Viewer para ver lo que puede implementar con la API de Aspose.Slides:
Preguntas frecuentes
¿Puedo incrustar un visor de presentaciones en una aplicación web ASP.NET?
Sí. Puede usar Aspose.Slides en el lado del servidor para renderizar diapositivas como imágenes o HTML y mostrarlas en el navegador. Las funciones de navegación y zoom pueden implementarse con JavaScript para una experiencia interactiva.
¿Cuál es la mejor manera de mostrar diapositivas dentro de un visor .NET personalizado?
El enfoque recomendado es renderizar cada diapositiva como una imagen (p. ej., PNG o SVG) o convertirla a HTML usando Aspose.Slides, y luego mostrar el resultado dentro de un picture box (para escritorio) o un contenedor HTML (para web).
¿Cómo manejo presentaciones grandes con muchas diapositivas?
Para presentaciones extensas, considere la carga diferida o el renderizado bajo demanda de las diapositivas. Esto significa generar el contenido de una diapositiva solo cuando el usuario navega a ella, reduciendo el uso de memoria y el tiempo de carga.
