Browse our Products

Aspose.Slides for .NET 20.10 Release Notes

KeySummaryCategory
SLIDESNET-42182Investigation regarding Shape IDs in presentationInvestigation
SLIDESNET-42173Password Decryption InquiryInvestigation
SLIDESNET-42152OLE object is not getting enabled in latest versionInvestigation
SLIDESNET-41967.NET 5 SupportFeature
SLIDESNET-41960Add DefaultRegularFont property to NotesCommentsLayoutingOptionsFeature
SLIDESNET-41409Support for representing Autoshape text as curveFeature
SLIDESNET-35920WordArt effects editing APIFeature
SLIDESNET-42099Make IChartData.SetRange() method workable for all chart typesEnhancement
SLIDESNET-42185ODP 1.3 files created in LibreOffice 7.0 are not supported Bug
SLIDESNET-42183Conversion from PPT to PPTX generates xml with invalid charactersBug
SLIDESNET-42176Exception: An entry with the same key already exists seen while cloning a password protected PPTX fileBug
SLIDESNET-42165How to compress fonts with Aspose.Slides for .NETBug
SLIDESNET-42161Presentation.GetThumbnail() generating the thumbnails for entire presentation rather selected slidesBug
SLIDESNET-42159NULL Reference exceptionBug
SLIDESNET-42158Chart series names must be unique. More than one series named as ?Zensiert?Bug
SLIDESNET-42154Text is improperly rendered in generated thumbnailBug
SLIDESNET-42153PPTX to PDF conversion: Some words are mergedBug
SLIDESNET-42151NullReferenceException when trying to get metainfo for PPTBug
SLIDESNET-42150Aspose.Slides.Spreadsheet.CellCircularReferenceException on exporting to PDFBug
SLIDESNET-42143A black line appears in the star shapeBug
SLIDESNET-42142Saving pptx file causes FormatExceptionBug
SLIDESNET-42140IChartData.SetRange throws an exception for Bubble charts with more than 1 seriesBug
SLIDESNET-42138No exception is thrown on loading a corrupt presentationBug
SLIDESNET-42137Text size changed in saved presentationBug
SLIDESNET-42136Part of image becomes blurry in thumbnailBug
SLIDESNET-42135NullReferenceException if InterruptionToken will be interrupted while loading presentationBug
SLIDESNET-42134Detection of PPTX file formatBug
SLIDESNET-42133Direction of text getting changedBug
SLIDESNET-42132Character spacing is not getting appliedBug
SLIDESNET-42131Font size changing on rotating textBug
SLIDESNET-42130ArgumentOutOfRangeException on loading presentation fileBug
SLIDESNET-42124PDF converted from PPTX lost all text in meta filesBug
SLIDESNET-42122Object reference not set to an instance of an object exception when converting PPSMBug
SLIDESNET-42121Exception on saving  to TiffBug
SLIDESNET-42116Wrong chart when cloning a slideBug
SLIDESNET-42083Pictures disappear after converting pptx file to thumbnailBug
SLIDESNET-42002Images are missing in generated PDFBug
SLIDESNET-41271Equation text overlap in generated HTMLBug
SLIDESNET-40416Unable to remove the column from tableBug
SLIDESNET-39963Wrong formatting in notesBug

Public API Changes

Obsolete methods and properties were removed

ICell/Cell format properties removed, use CellFormat instead. BorderBottomBorderDiagonalDownBorderDiagonalUpBorderLeftBorderRightBorderTop, and FillFormat properties removed from ICell/Cell and moved to ICell.CellFormat property.

BaseSlide.CreateBackgroundEffective method has been removed, use Background.GetEffective() instead.

IParagraph/Paragraph CreateParagraphFormatEffective() has been removed, use IParagraph.ParagraphFormat.GetEffective() instead.

IPortion/Portion CreatePortionFormatEffective has been removed, use IPortion.PortionFormat.GetEffective() instead.

IShape/Shape Create*FormatEffective effective formatting methods group has been removed, use the corresponding  LineFormatFillFormatEffectFormatThreeDFormatFormat GetEffective() method instead.

IShape/Shape methods were replaced:

  • CreateLineFormatEffective() with LineFormat.GetEffective()
  • CreateFillFormatEffective() with FillFormat.GetEffective()
  • CreateEffectFormatEffective() with EffectFormat.GetEffective()
  • CreateThreeDFormatEffective() with ThreeDFormatFormat.GetEffective()

ITextFrame/TextFrame CreateTextFrameFormatEffective() has been removed, use ITextFrame.TextFrameFormat.GetEffective() instead.

WordArt API support has been added

WordArt API support has been added. WordArt is a special feature that allows users to give special effects to the text such as curved text, 3D text, color gradients, and more.

IRenderingOptions interface and RenderingOptions class have been added

IRenderingOptions interface and implementing it RenderingOptions class have been added. Their purpose is to aggregate options used during presentation or slide rendering.

IRenderingOptions declaration:

/// <summary>
/// Provides options that control how a presentation/slide is rendered.
/// </summary>
public interface IRenderingOptions : ISaveOptions
{
    /// <summary>
    /// Provides options that control how notes and comments is placed in exported document.
    /// </summary>
    INotesCommentsLayoutingOptions NotesCommentsLayouting { get; }
}

As it can be seen from the declaration, IRenderingOptions inherits ISaveOptions which makes WarningCallback, ProgressCallback and DefaultRegularFont properties available to specify in RenderingOptions class instance together with NotesCommentsLayouting options.

The following code sample demonstrates one of the possible use cases (getting slide thumbnails with different default font and slide’s notes shown):

using (Presentation pres = new Presentation("SomePresentation.pptx"))
{
    IRenderingOptions renderingOpts = new RenderingOptions();
    renderingOpts.NotesCommentsLayouting.NotesPosition = NotesPositions.BottomTruncated;

    pres.Slides[0].GetThumbnail(renderingOpts).Save("SomePresentation-Slide1-Original.png", ImageFormat.Png);

    renderingOpts.DefaultRegularFont = "Arial Black";
    pres.Slides[0].GetThumbnail(renderingOpts).Save("SomePresentation-Slide1-ArialBlackDefault.png", ImageFormat.Png);

    renderingOpts.DefaultRegularFont = "Arial Narrow";
    pres.Slides[0].GetThumbnail(renderingOpts).Save("SomePresentation-Slide1-ArialNarrowDefault.png", ImageFormat.Png);
}

IPresentation.GetThumbnails, ISlide.GetThumbnail and ISlide.RenderToGraphics methods have been overloaded

New methods overloads have been added to IPresentation and ISlide interfaces.

IPresentation methods overloads:

/// <summary>
/// Returns a Thumbnail Bitmap objects for all slides of a presentation.
/// </summary>
Bitmap[] GetThumbnails(IRenderingOptions options);

/// <summary>
/// Returns a Thumbnail Bitmap objects for specified slides of a presentation.
/// </summary>
Bitmap[] GetThumbnails(IRenderingOptions options, int[] slides);

/// <summary>
/// Returns a Thumbnail Bitmap objects for all slides of a presentation with custom scaling.
/// </summary>
Bitmap[] GetThumbnails(IRenderingOptions options, float scaleX, float scaleY);

/// <summary>
/// Returns a Thumbnail Bitmap objects for specified slides of a presentation with custom scaling.
/// </summary>
Bitmap[] GetThumbnails(IRenderingOptions options, int[] slides, float scaleX, float scaleY);

/// <summary>
/// Returns a Thumbnail Bitmap objects for all slides of a presentation with specified size.
/// </summary>
Bitmap[] GetThumbnails(IRenderingOptions options, Size imageSize);

/// <summary>
/// Returns a Thumbnail Bitmap objects for specified slides of a presentation with specified size.
/// </summary>
Bitmap[] GetThumbnails(IRenderingOptions options, int[] slides, Size imageSize);

ISlide methods overloads:

/// <summary>
/// Returns a Thumbnail Bitmap object.
/// </summary>
Bitmap GetThumbnail(IRenderingOptions options);

/// <summary>
/// Returns a Thumbnail Bitmap object with custom scaling.
/// </summary>
Bitmap GetThumbnail(IRenderingOptions options, float scaleX, float scaleY);

/// <summary>
/// Returns a Thumbnail Bitmap object with specified size.
/// </summary>
Bitmap GetThumbnail(IRenderingOptions options, Size imageSize);

/// <summary>
/// Renders certain slide to a Graphics object.
/// </summary>
void RenderToGraphics(IRenderingOptions options, Graphics graphics);

/// <summary>
/// Renders certain slide to a Graphics object with custom scaling.
/// </summary>
void RenderToGraphics(IRenderingOptions options, Graphics graphics, float scaleX, float scaleY);

/// <summary>
/// Renders certain slide to a Graphics object with specified size.
/// </summary>
void RenderToGraphics(IRenderingOptions options, Graphics graphics, Size renderingSize);

All of these overloads use IRenderingOptions as an argument and come instead of old methods with INotesCommentsLayoutingOptions argument. Old methods are marked as obsolete and will be removed since Aspose.Slides 21.4 Release.

ITextFrameFormat.ThreeDFormat and ITextFrameFormat.Transform properties have been added

New ThreeDFormat and Transform properties have been added to ITextFrameFormat interface. These properties allow to set 3D effect to text in TextFrame.

Properties declaration:

/// <summary>
/// Returns the ThreeDFormat object that represents 3d effect properties for a text.
/// Read-only <see cref="IThreeDFormat"/>.
/// </summary>
IThreeDFormat ThreeDFormat { get; }

and

/// <summary>
/// Gets or sets text wrapping shape.
/// Read/write <see cref="TextShapeType"/>.
/// </summary>
TextShapeType Transform { get; set; }

The code snippet below demonstrates setting 3D effect to text:

using (Presentation pres = new Presentation())
{
    IAutoShape autoShape = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 10, 20, 400, 300);

    ITextFrame textFrame = autoShape.TextFrame;

    textFrame.Text = "Aspose.Slide Test Text";

    // Set text transformation
    textFrame.TextFrameFormat.Transform = TextShapeType.ArchUpPour;

    // Set Extrusion
    textFrame.TextFrameFormat.ThreeDFormat.ExtrusionColor.Color = Color.Orange;
    textFrame.TextFrameFormat.ThreeDFormat.ExtrusionHeight = 6;

    // Set Contour
    textFrame.TextFrameFormat.ThreeDFormat.ContourColor.Color = Color.DarkRed;
    textFrame.TextFrameFormat.ThreeDFormat.ContourWidth = 1.5;

    // Set Depth
    textFrame.TextFrameFormat.ThreeDFormat.Depth = 3;

    // Set Material
    textFrame.TextFrameFormat.ThreeDFormat.Material = MaterialPresetType.Plastic;

    // Set Lighting
    textFrame.TextFrameFormat.ThreeDFormat.LightRig.Direction = LightingDirection.Top;
    textFrame.TextFrameFormat.ThreeDFormat.LightRig.LightType = LightRigPresetType.Balanced;
    textFrame.TextFrameFormat.ThreeDFormat.LightRig.SetRotation(0, 0, 40);

    // Set camera type
    textFrame.TextFrameFormat.ThreeDFormat.Camera.CameraType = CameraPresetType.PerspectiveContrastingRightFacing;
}