Browse our Products

Aspose.Slides for .NET 21.5 Release Notes

KeySummaryCategoryRelated Documentation
SLIDESNET-42479Running a macro by clicking a buttonFeaturehttps://docs.aspose.com/slides/net/manage-hyperlinks/
SLIDESNET-40842Support for Zoom for PowerPointFeaturehttps://docs.aspose.com/slides/net/manage-zoom/
SLIDESNET-40747Support for reading autofit scale valuesFeaturehttps://docs.aspose.com/slides/net/shape-effective-properties/
SLIDESNET-42551Custom PPT root directory entry object class GUID (CLSID)Enhancementhttps://docs.aspose.com/slides/net/save-presentation/#save-presentation-to-file
SLIDESNET-42549Size of the generated PDF in Aspose.Slides is much larger than in PowerPointBughttps://docs.aspose.com/slides/net/convert-powerpoint-ppt-and-pptx-to-pdf/
SLIDESNET-42546Animation becomes broken after loading and saving PPT fileBug<https://docs.aspose.com/slides/net/save-presentation/ https://docs.aspose.com/slides/net/powerpoint-animation/>
SLIDESNET-42543Table borders are incorrect in cloned slideBughttps://docs.aspose.com/slides/net/clone-slides/
SLIDESNET-42535External URL from paragraph portion is incorrectBughttps://docs.aspose.com/slides/net/manage-hyperlinks/
SLIDESNET-42525Unknown load format for presentationsBughttps://docs.aspose.com/slides/net/presentation-format/
SLIDESNET-42523The text is not displayed correctly when converting PPTX to SVGBughttps://docs.aspose.com/slides/net/render-slide-as-svg-image/
SLIDESNET-42522PPTX to PDF conversion fails in 3rd slideBughttps://docs.aspose.com/slides/net/convert-powerpoint-ppt-and-pptx-to-pdf/
SLIDESNET-42510Aspose.Slides giving false for two equal layout slidesBughttps://docs.aspose.com/slides/net/compare-slides/
SLIDESNET-42499Converting PPT to PDF gets StackOverflowExceptionBughttps://docs.aspose.com/slides/net/convert-powerpoint-ppt-and-pptx-to-pdf/
SLIDESNET-42480Aspose.Slides breaks OLE links in PPT filesBughttps://docs.aspose.com/slides/net/save-presentation/
SLIDESNET-42478The time format is incorrect in a chartBughttps://docs.aspose.com/slides/net/export-chart/
SLIDESNET-42470OLE did not render image object on slide 2Bughttps://docs.aspose.com/slides/net/convert-slide/
SLIDESNET-42421Font height of a text portion is wrongBughttps://docs.aspose.com/slides/net/shape-effective-properties/
SLIDESNET-42419PPT to PPT - The text is not displayed as expected in LibreOffice ImpressBughttps://docs.aspose.com/slides/net/save-presentation/
SLIDESNET-39958Incorrect font sizeBughttps://docs.aspose.com/slides/net/shape-effective-properties/
SLIDESNET-37268Arabic text gets changed on rendering (one more case)Bughttps://docs.aspose.com/slides/net/convert-slide/
SLIDESNET-37172Arabic Text rendered incorrectly in generated PDFBughttps://docs.aspose.com/slides/net/convert-powerpoint-ppt-and-pptx-to-pdf/
SLIDESNET-36523Wrong text wrapping in generated pdfBughttps://docs.aspose.com/slides/net/convert-powerpoint-ppt-and-pptx-to-pdf/

Public API Changes

.NET Standard 2.0 Support is obsolete

Support for .NET Standard 2.0 is obsolete. It will be replaced with support for .NET Standard 2.1 starting from version 21.6 of Aspose.Slides for .NET.

Zoom support has been added

The main article on Zoom: Manage Zoom

When you create a Zoom transition in PowerPoint, you can jump to (and from) specific slides, sections, and portions of your presentation in any order you prefer when presenting:

Zoom in PowerPoint

In Aspose.Slides, to provide the same functionality, we added a new enum ZoomImageType, a new interface IZoomFrame, and some new additional methods in IShapeCollection.

ZoomImageType Enum

The ZoomImageType determines whether the Zoom object uses the slide preview or a cover image.

This is the ZoomImageType enum definition:

public enum ZoomImageType
{
    /// <summary>
    /// Use the image of the slide or section.
    /// </summary>
    Preview = 1,

    /// <summary>
    /// Use a custom image.
    /// </summary>
    Cover = 2
}

IZoomFrame Interface

The IZoomFrame interface with the ZoomFrame implementation class has been added:

public interface IZoomFrame : IGraphicalObject
{
    /// <summary>
    /// Gets or sets the image type of a zoom object.
    /// Read/write <see cref="ZoomImageType"/>.
    /// Default value: Preview
    /// </summary>
    ZoomImageType ImageType { get; set; }

    /// <summary>
    /// Gets or sets the navigation behavior in slideshow.
    /// Read/write <see cref="bool"/>.
    /// Default value: false
    /// </summary>
    bool ReturnToParent { get; set; }

    /// <summary>
    /// Gets or sets the slide object that the Slide Zoom object links to.
    /// Read/write <see cref="ISlide"/>.
    /// </summary>
    ISlide TargetSlide { get; set; }

    /// <summary>
    /// Gets or sets value that specifies whether the Zoom will use the background of the destination slide.
    /// Read/write <see cref="bool"/>.
    /// Default value: true
    /// </summary>
    bool ShowBackground { get; set; }

    /// <summary>
    /// Gets or sets image for zoom object.
    /// Read/write <see cref="IPPImage"/>.
    /// </summary>
    IPPImage Image { get; set; }

    /// <summary>
    /// Gets or sets the duration of the transition between Zoom and slide.
    /// Read/write <see cref="float"/>.
    /// Default value: 1.0f
    /// </summary>
    float TransitionDuration { get; set; }
}

New methods in IShapeCollection interface have been added

These new methods create ZoomFrame objects:

/// <summary>
/// Adds a new Zoom object to the end of a collection.
/// </summary>
IZoomFrame AddZoomFrame(float x, float y, float width, float height, ISlide slide);

/// <summary>
/// Adds a new Zoom object to the end of a collection.
/// </summary>
IZoomFrame AddZoomFrame(float x, float y, float width, float height, ISlide slide, IPPImage image);

/// <summary>
/// Creates a new Zoom object and inserts it into a collection at the specified index.
/// </summary>
IZoomFrame InsertZoomFrame(int index, float x, float y, float width, float height, ISlide slide);

/// <summary>
/// Creates a new Zoom object and inserts it into a collection at the specified index.
/// </summary>
IZoomFrame InsertZoomFrame(int index, float x, float y, float width, float height, ISlide slide, IPPImage image);

Example

This example shows you how to create a ZoomFrame object with a custom image and specified image frame:

using (Presentation pres = new Presentation())
{
    //Add a new slide to the presentation
    ISlide slide = pres.Slides.AddEmptySlide(pres.Slides[0].LayoutSlide);

    // Create a new image for zoom object
    IPPImage image = pres.Images.AddImage(Image.FromFile("image.png"));

    // Add ZoomFrame object
    IZoomFrame zoomFrame = pres.Slides[0].Shapes.AddZoomFrame(20, 20, 300, 200, slide, image);

    // Set zoom frame format
    zoomFrame.LineFormat.Width = 5;
    zoomFrame.LineFormat.FillFormat.FillType = FillType.Solid;
    zoomFrame.LineFormat.FillFormat.SolidFillColor.Color = Color.HotPink;
    zoomFrame.LineFormat.DashStyle = LineDashStyle.DashDot;

    // Save the presentation
    pres.Save("presentation.pptx", SaveFormat.Pptx);
}

IHyperlinkManager SetMacroHyperlinkClick method has been added

A new method, SetMacroHyperlinkClick, has been added to the IHyperlinkManager interface and HyperlinkManager class.

The SetMacroHyperlinkClick method is used to set a macro hyperlink on a click for a shape.

Method declaration:

/// <summary>
/// Set Macro hyperlink on a click.
/// </summary>
/// <param name="macroName">Name of the macro</param>
/// <returns>Hyperlink object <see cref="IHyperlink"/></returns>
IHyperlink SetMacroHyperlinkClick(string macroName);

This code snippet shows you how the SetMacroHyperlinkClick method is used to set a macro hyperlink click on a shape:

using (Presentation presentation = new Presentation())
{
    IAutoShape shape = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.BlankButton, 20, 20, 80, 30);
    shape.HyperlinkManager.SetMacroHyperlinkClick("MacroName");
}

IPptOptions RootDirectoryClsid property has been added

A new property, RootDirectoryClsid, has been added to the IPptOptions interface and PptOptions class.

The RootDirectoryClsid property represents the object class GUID (CLSID) that is stored in the root directory entry. It can be used for COM activation of the document’s application.

Property declaration:

/// <summary>
/// Represents the object class GUID (CLSID) that is stored in the root directory entry. It can be used for COM.
/// activation of the document's application.
/// The default value is '64818D11-4F9B-11CF-86EA-00AA00B929E8' that corresponds to 'Microsoft Powerpoint.Slide.8'.
/// </summary>       
Guid RootDirectoryClsid { get; set; }

This code snippet shows you how the custom RootDirectoryClsid can be set:

using (Presentation pres = new Presentation())
{
    PptOptions pptOptions = new PptOptions();

    // set CLSID to 'Microsoft Powerpoint.Show.8'
    pptOptions.RootDirectoryClsid = new Guid("64818D10-4F9B-11CF-86EA-00AA00B929E8");

    pres.Save("pres.ppt", SaveFormat.Ppt, pptOptions);
}

Aspose.Slides.Export.Web.* interfaces will be removed

The following interfaces will be removed from Aspose.Slides.Export.Web namespace:

ITemplateEngine method

string Compile<TModel>(string key, TModel model);

will be replaced with:

string Compile(string key, object model);