API Moderna
Introducción
Históricamente, Aspose Slides tiene una dependencia de System.Drawing y tiene en la API pública las siguientes clases de allí:
A partir de la versión 24.4, esta API pública se declara obsoleta.
Dado que el soporte para System.Drawing en versiones .NET6 y superiores se ha eliminado para versiones que no son de Windows (cambio importante), Slides ha implementado un enfoque de dos versiones de biblioteca:
- Aspose.Slides.NET - soporte para .NET6+ para Windows, .NETStandard para Windows/Linux/MacOS, .NETFramework 2+ (Windows).
- tiene una dependencia de System.Drawing.Common.
- Aspose.Slides.NET6.CrossPlatform - versión para Windows/Linux/MacOS sin dependencias.
La inconveniencia de Aspose.Slides.NET6.CrossPlatform es que implementa su propia versión de System.Drawing en el mismo espacio de nombres (para mantener la compatibilidad con versiones anteriores con la API pública). Así, cuando Aspose.Slides.NET6.CrossPlatform y System.Drawing de .NETFramework o paquete System.Drawing.Common se utilizan al mismo tiempo, ocurre un conflicto de nombres a menos que se use un alias.
Con el fin de eliminar dependencias de System.Drawing en el paquete principal Aspose.Slides.NET, añadimos lo que se denomina “API Moderna”, es decir, la API que debe ser utilizada en lugar de la obsoleta, cuyas firmas contienen dependencias en los siguientes tipos de System.Drawing: Image y Bitmap. PrinterSettings y Graphics se declaran obsoletas y su soporte se elimina de la API pública de Slides.
La eliminación de la API pública obsoleta con dependencias en System.Drawing estará en la versión 24.8.
API Moderna
Se añadieron las siguientes clases y enums a la API pública:
- Aspose.Slides.IImage - representa la imagen raster o vectorial.
- Aspose.Slides.ImageFormat - representa el formato de archivo de la imagen.
- Aspose.Slides.Images - métodos para instanciar y trabajar con la interfaz IImage.
Tenga en cuenta que IImage es desechable (implementa la interfaz IDisposable y su uso debe estar envuelto en using o liberado de otra manera conveniente).
Un escenario típico de uso de la nueva API puede verse de la siguiente manera:
using (Presentation pres = new Presentation())
{
IPPImage ppImage;
// instanciar una instancia desechable de IImage desde el archivo en el disco.
using (IImage image = Images.FromFile("image.png"))
{
// crear una imagen de PowerPoint añadiendo una instancia de IImage a las imágenes de la presentación.
ppImage = pres.Images.AddImage(image);
}
// añadir una forma de imagen en la diapositiva #1
pres.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 10, 10, 100, 100, ppImage);
// obtener una instancia de IImage que representa la diapositiva #1.
using (var slideImage = pres.Slides[0].GetImage(new Size(1920, 1080)))
{
// guardar la imagen en el disco.
slideImage.Save("slide1.jpeg", ImageFormat.Jpeg);
}
}
Reemplazo de código antiguo con API Moderna
Para facilitar la transición, la interfaz de la nueva IImage repite las firmas separadas de las clases Image y Bitmap. En general, solo necesitará reemplazar la llamada al antiguo método utilizando System.Drawing con el nuevo.
Obtener una miniatura de diapositiva
Código utilizando una API obsoleta:
using (Presentation pres = new Presentation("pres.pptx"))
{
pres.Slides[0].GetThumbnail().Save("slide1.png");
}
API Moderna:
using (Presentation pres = new Presentation("pres.pptx"))
{
pres.Slides[0].GetImage().Save("slide1.png");
}
Obtener una miniatura de forma
Código utilizando una API obsoleta:
using (Presentation pres = new Presentation("pres.pptx"))
{
pres.Slides[0].Shapes[0].GetThumbnail().Save("shape.png");
}
API Moderna:
using (Presentation pres = new Presentation("pres.pptx"))
{
pres.Slides[0].Shapes[0].GetImage().Save("shape.png");
}
Obtener una miniatura de presentación
Código utilizando una API obsoleta:
using (Presentation pres = new Presentation("pres.pptx"))
{
var bitmaps = pres.GetThumbnails(new RenderingOptions(), new Size(1980, 1028));
try
{
for (var index = 0; index < bitmaps.Length; index++)
{
Bitmap thumbnail = bitmaps[index];
thumbnail.Save($"slide{index}.png", ImageFormat.Png);
}
}
finally
{
foreach (Bitmap bitmap in bitmaps)
{
bitmap.Dispose();
}
}
}
API Moderna:
using (Presentation pres = new Presentation("pres.pptx"))
{
var images = pres.GetImages(new RenderingOptions(), new Size(1980, 1028));
try
{
for (var index = 0; index < images.Length; index++)
{
IImage thumbnail = images[index];
thumbnail.Save($"slide{index}.png", ImageFormat.Png);
}
}
finally
{
foreach (IImage image in images)
{
image.Dispose();
}
}
}
Añadir una imagen a una presentación
Código utilizando una API obsoleta:
using (Presentation pres = new Presentation())
{
IPPImage ppImage;
using (Image image = Image.FromFile("image.png"))
{
ppImage = pres.Images.AddImage(image);
}
pres.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 10, 10, 100, 100, ppImage);
}
API Moderna:
using (Presentation pres = new Presentation())
{
IPPImage ppImage;
using (IImage image = Aspose.Slides.Images.FromFile("image.png"))
{
ppImage = pres.Images.AddImage(image);
}
pres.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 10, 10, 100, 100, ppImage);
}
Métodos/propiedades que se eliminarán y su reemplazo en API Moderna
Presentación
Firma del Método | Firma del Método de Reemplazo |
---|---|
public Bitmap[] GetThumbnails(IRenderingOptions options) | GetImages(IRenderingOptions options) |
public Bitmap[] GetThumbnails(IRenderingOptions options, int[] slides) | GetImages(IRenderingOptions options, int[] slides) |
public Bitmap[] GetThumbnails(IRenderingOptions options, float scaleX, float scaleY) | GetImages(IRenderingOptions options, float scaleX, float scaleY) |
public Bitmap[] GetThumbnails(IRenderingOptions options, int[] slides, float scaleX, float scaleY) | GetImages(IRenderingOptions options, int[] slides, float scaleX, float scaleY) |
public Bitmap[] GetThumbnails(IRenderingOptions options, Size imageSize) | GetImages(IRenderingOptions options, Size imageSize) |
public Bitmap[] GetThumbnails(IRenderingOptions options, int[] slides, Size imageSize) | GetImages(IRenderingOptions options, int[] slides, Size imageSize) |
public void Save(string fname, SaveFormat format, HttpResponse response, bool showInline) | Se eliminará por completo |
public void Save(string fname, SaveFormat format, ISaveOptions options, HttpResponse response, bool showInline) | Se eliminará por completo |
public void Print() | Se eliminará por completo |
public void Print(PrinterSettings printerSettings) | Se eliminará por completo |
public void Print(string printerName) | Se eliminará por completo |
public void Print(PrinterSettings printerSettings, string presName) | Se eliminará por completo |
Forma
Firma del Método | Firma del Método de Reemplazo |
---|---|
public Bitmap GetThumbnail() | GetImage |
public Bitmap GetThumbnail(ShapeThumbnailBounds bounds, float scaleX, float scaleY) | GetImage(ShapeThumbnailBounds bounds, float scaleX, float scaleY) |
Diapositiva
Firma del Método | Firma del Método de Reemplazo |
---|---|
public Bitmap GetThumbnail(float scaleX, float scaleY) | GetImage(float scaleX, float scaleY) |
public Bitmap GetThumbnail() | GetImage |
public Bitmap GetThumbnail(IRenderingOptions options) | GetImage(IRenderingOptions options) |
public Bitmap GetThumbnail(Size imageSize) | GetImage(Size imageSize) |
public Bitmap GetThumbnail(ITiffOptions options) | GetImage(ITiffOptions options) |
public Bitmap GetThumbnail(IRenderingOptions options, float scaleX, float scaleY) | GetImage(IRenderingOptions options, float scaleX, float scaleY) |
public Bitmap GetThumbnail(IRenderingOptions options, Size imageSize) | GetImage(IRenderingOptions options, Size imageSize) |
public void RenderToGraphics(IRenderingOptions options, Graphics graphics) | Se eliminará por completo |
public void RenderToGraphics(IRenderingOptions options, Graphics graphics, float scaleX, float scaleY) | Se eliminará por completo |
public void RenderToGraphics(IRenderingOptions options, Graphics graphics, Size renderingSize) | Se eliminará por completo |
Salida
Firma del Método | Firma del Método de Reemplazo |
---|---|
public IOutputFile Add(string path, Image image) | Add(string path, IImage image) |
ImageCollection
Firma del Método | Firma del Método de Reemplazo |
---|---|
IPPImage AddImage(Image image) | AddImage(IImage image) |
ImageWrapperFactory
Firma del Método | Firma del Método de Reemplazo |
---|---|
IImageWrapper CreateImageWrapper(Image image) | CreateImageWrapper(IImage image) |
PPImage
Firma/Método | Firma del Método de Reemplazo |
---|---|
void ReplaceImage(Image newImage) | ReplaceImage(IImage newImage) |
Image SystemImage { get; } | IImage Image { get; } |
PatternFormat
Firma del Método | Firma del Método de Reemplazo |
---|---|
Bitmap GetTileImage(Color background, Color foreground) | GetTile(Color background, Color foreground) |
Bitmap GetTileImage(Color styleColor) | GetTile(Color styleColor) |
IPatternFormatEffectiveData
Firma del Método | Firma del Método de Reemplazo |
---|---|
Bitmap GetTileImage(Color background, Color foreground) | GetTileIImage(SlidesImage image) |
El soporte para Aspose.Slides.NET6.CrossPlatform se descontinuará
Tras el lanzamiento de Aspose.Slides.NET versión 24.8, el soporte para Aspose.Slides.NET6.CrossPlatform se descontinuará.
El soporte de API para Graphics y PrinterSettings se descontinuará
La clase Graphics no es compatible con versiones multiplataforma de .NET6 y superiores. En Aspose Slides, se eliminará la parte de la API que la utiliza: Slide
- public void RenderToGraphics(IRenderingOptions options, Graphics graphics)
- public void RenderToGraphics(IRenderingOptions options, Graphics graphics, float scaleX, float scaleY)
- public void RenderToGraphics(IRenderingOptions options, Graphics graphics, Size renderingSize)
Además, se eliminará la parte de la API relacionada con la impresión: