Browse our Products

Aspose.Words for .NET 24.5 Release Notes

Major Features

There are 116 improvements and fixes in this regular monthly release. The most notable are:

  • Included .NET 7.0/8.0 assemblies in the Aspose.Words NuGet package.
  • Implemented a function to eliminate empty pages from the document.
  • Implemented DML effects rendering for SVG graphics, extending previous functionality limited to images.
  • Introduced support for creating combo charts and adjusting properties such as gap width, overlap, and bubble scale within series groups.
  • Implemented functionality to manipulate SoftEdge effect of a shape.
  • Introduced SvgSaveOptions.MaxImageResolution as a public property.
  • Implemented an ability to modify adjust values of shape.
  • Provided capability to check for the presence of VBA macros without loading the document.
  • Supported keeping of source numbering while inserting a document using LINQ Reporting Engine.

Full List of Issues Covering all Changes in this Release

Expand to view the full list of issues.
KeySummaryCategory
WORDSNET-23689Add .NET 7.0 assemblies to the release buildNew Feature
WORDSNET-25670Provide an ability to set bar/column chart gapWidth and overlapNew Feature
WORDSNET-21036Add feature to set series overlap in a chartNew Feature
WORDSNET-26168Provide public API to get set BubbleScaleNew Feature
WORDSNET-17602Provide API to Adjust the Gap Width of Charts Data PointNew Feature
WORDSNET-13513Add feature to format Data Series (Gap Width)New Feature
WORDSNET-15340Support to modify width of chart columnsNew Feature
WORDSNET-19022Support composite chartsNew Feature
WORDSNET-20209Add feature to update Composite ChartsNew Feature
WORDSNET-18330Add feature to create Combo ChartsNew Feature
WORDSNET-17518Support creation of Combo Charts or Dual-Axis ChartsNew Feature
WORDSNET-26482Support keeping of source numbering while inserting a document using LINQ Reporting EngineNew Feature
WORDSNET-26281Add option to resize all images inside produced svg to some value if their dpi is higher than your_valueNew Feature
WORDSNET-25293Add support for advanced shape properties (List of Shape Adjust Values)New Feature
WORDSNET-26877Implement DML effects rendering for SVG graphicsNew Feature
WORDSNET-26750Investigate whether it is possible to check if the document has macros without loading document into the modelNew Feature
WORDSNET-26898Add .NET 8.0 assemblies to the release buildNew Feature
WORDSNET-26701Implement a two-color gradient rendering with interpolation based on splinesNew Feature
WORDSNET-26867Implement DML gamma and inverseGamma color modifiersNew Feature
WORDSNET-25746Add Complex Controls to ShapesNew Feature
WORDSNET-13167Support creation of Combo Charts or Dual-Axis ChartsEnhancement
WORDSNET-19242Combo Charts or Dual-Axis Charts in documentEnhancement
WORDSNET-15383DOCX to PDF conversion issue with cell’s textEnhancement
WORDSNET-12981Paragraph under Table renders to the right of it in PDFEnhancement
WORDSNET-20559Content missing after DOCX to PDF conversionEnhancement
WORDSNET-24989Table created programmatically is not rendered the same way as it shown in MS WordEnhancement
WORDSNET-24406Allow comparing only tables in documentsEnhancement
WORDSNET-24653Series overlap for chartsBug
WORDSNET-12769Combo Charts does not workBug
WORDSNET-22334Chart is not created correctly after removing seriesBug
WORDSNET-26096Equation is rendered improperlyBug
WORDSNET-26793Graphics objects lost formatting after conversion to PDFBug
WORDSNET-26878SkiaSharp shows warnings with Aspose.Words 24.4.0 in .NET 4.8Bug
WORDSNET-26553margin-top’ and ‘margin-bottom’ style attributes are not imported for list items from HTMLBug
WORDSNET-26818Blank squares instead of persian characters in output fileBug
WORDSNET-26780Text is wrapped improperly upon renderingBug
WORDSNET-26672Add support to get Soft Edges effect of a ShapeBug
WORDSNET-26765Incorrect table cell margins after conversion DOCX->HTML->DOCXBug
WORDSNET-26855Image size is incorrect after loading HTMLBug
WORDSNET-25856Leelawadee UI is chnaged to DaunPenh after open save documentBug
WORDSNET-26228Aspose.Words does not throw exception upon loading corrupted documentBug
WORDSNET-26890Incorrect Revisions After Comparing DocumentsBug
WORDSNET-26889Removed list labels are rendered in PDFBug
WORDSNET-26627Numbering is is incorrect after converting DOC to HTMLBug
WORDSNET-26342WMF images are clipped incorrectlyBug
WORDSNET-26896ArithmeticException upon rendering metafileBug
WORDSNET-26525EQ field is rendered improperly - subscript is rendered as superscriptBug
WORDSNET-26861Null reference exception when converting DOCX to HTML or SVGBug
WORDSNET-26860SVG image is rendered improperlyBug
WORDSNET-26887Image is lost after renderingBug
WORDSNET-26856Image moved up after conversion to PDFBug
WORDSNET-26597StackOverflowException is thrown upon loading DOCX documentBug
WORDSNET-26575HTML resources can not be loadedBug
WORDSNET-26595Content is lost after rendering PDF with PreserveFormFields=trueBug
WORDSNET-26432Chart changes undetected on document comparisonBug
WORDSNET-26806Aspose.Words hangs upon loading damaged documentBug
WORDSNET-26799Incorrect Document Revisions After ComparisonBug
WORDSNET-26736Link after deep nested table is not clickable in PDFBug
WORDSNET-26723Label that is hidden in the chart, apears in the imageBug
WORDSNET-26706Vertical lines added in the chart’s columnBug
WORDSNET-25493Table row is moved to the next page after renderingBug
WORDSNET-26249Incorrect handling of cell preferred tcw element in pct unitsBug
WORDSNET-26815MergeDocuments throws exception for empty documentBug
WORDSNET-10542Preserve ParagraphFormat.OutlineLevel during Word-HTML-Word round-tripBug
WORDSNET-26693Footnotes are rendered improperly (Specific)Bug
WORDSNET-20586Page break issue while converting DOC/DOCX to PDFBug
WORDSNET-26583Space before paragraph does not match MS Word when paragraphs before are hiddenBug
WORDSNET-26728Part of content is moved to next pageBug
WORDSNET-26845DML Tint effect is rendered incorrectlyBug
WORDSNET-26843DML Shade effect is calculated incorrectlyBug
WORDSNET-26870DML percentage based color modifiers should use scRGB color spaceBug
WORDSNET-26791Issue with Page Numbering in TOC After Field UpdatesBug
WORDSNET-26888Bookmarks should be placed outside of colontitlesBug
WORDSNET-26069Granularity enumeration items do not have descriptionBug
WORDSNET-25531Retest WORDSNET-23458 for MergeDocuments featureBug
WORDSNET-26763Number format in de_AT CultureInfoBug
WORDSNET-26822MailMerge.executeWithRegions throws IllegalStateExceptionBug
WORDSNET-26831Linked OLE object is changed after open/save RTF documentBug
WORDSNET-26825Ole object read from RTF returns OleFormat.IconCaption empty string while the object has iconBug
WORDSNET-26636Table Border Lost for Inline ComponentBug
WORDSNET-24877Commented range is not highlighted in rendered documentBug
WORDSNET-26530Comment range is not highlighted after rendering documentBug
WORDSNET-26743Documents with WebP and Dib images are rendered as red crossBug
WORDSNET-26311Issue upon rendering on .NET StandardBug
WORDSNET-26729Vertical axis title wrapping is incorrect after renderingBug
WORDSNET-26744Scatter chart is rendered improperlyBug
WORDSNET-26747NullReferenceException is thrown upon rendering document.Bug
WORDSNET-26834Content is converted to all caps after loading ODT documentBug
WORDSNET-26838PDF file is detected as MHTMLBug
WORDSNET-26817Value of data label is changed to CELLREF after open save documentBug
WORDSNET-26837Document.Compare throws System.InvalidOperationException: NC sync failedBug
WORDSNET-26840The Logo image has incorrect position after PDF->Docx conversionBug
WORDSNET-26284Japanese text is wrapped incorrectlyBug
WORDSNET-20973Parenthesis does not get the correct spacing during DOCX to PDF conversionBug
WORDSNET-26761Specifying BaseUri without a scheme disrupts resource loadingBug
WORDSNET-26735BaseUri is incorrectly determined when HTML document is loaded from a URLBug
WORDSNET-25882How can we determine whether the text inside a shape is white or blackBug
WORDSNET-26764Aspose.Words hangs upon saving document to TIFFBug
WORDSNET-26790Aspose.Words hangs upon saving document to imageBug
WORDSNET-26581Color of gradients are darker after rendering documentBug
WORDSNET-15982Incorrect wrapping of line with tabs in a tableBug
WORDSNET-26421Spaces become narrower after AppendDocumentBug
WORDSNET-26865Output pages are less than the source Word fileBug
WORDSNET-25517Corrupted document doesn’t give warning on loadingBug
WORDSNET-26702Font in metafile is changed after renderingBug
WORDSNET-26885Wrapped text is not searchable in PDF produced by Aspose.WordsBug
WORDSNET-26886Replacement of the text with a carriage return is not copying the list formatBug
WORDSNET-26832Compared result shows original documentBug
WORDSNET-26854Image lost after re-saving PDF to PDFBug
WORDSNET-26410Unable to replace values in a combo chartBug
WORDSNET-26733Docx to HtmlFixed to Docx conversion destroys the document formatBug
WORDSNET-26732Docx to HtmlFixed conversion bugBug
WORDSNET-26810Files stretched to a landscape pageBug
WORDSNET-26847LowCode.Merger.Merge throws NullReferenceExceptionBug
WORDSNET-20556Content of Textbox disappears when converting DOCX to PDFBug
WORDSNET-25583Table is is rendered beyond the page marginsBug

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 24.5. It includes not only new and obsoleted public methods, but also a description of any changes in the behavior behind the scenes in Aspose.Words which may affect existing code. Any behavior introduced that could be seen as regression and modifies the existing behavior is especially important and is documented here.

Added ability to create combo charts and set gap width, overlap and bubble scale properties of series group

Related issue: WORDSNET-19242

An ability to create combo charts, that is, charts consisting of several series groups, has been implemented. In addition, it has become possible to set the bubble scale, gap width and column overlap.

New classes ChartSeriesGroup and ChartSeriesGroupCollection have been implemented, and new SeriesGroups property have been added to the Chart class:

/// <summary>
/// Represents properties of a chart series group, that is, the properties of chart series of the same type
/// associated with the same axes.
/// </summary>
/// <remarks>
/// Combo charts contains multiple chart series groups, with a separate group for each series type.
/// Also, you can create a chart series group to assign secondary axes to one or more chart series.
/// </remarks>
public class ChartSeriesGroup
{
    /// <summary>
    /// Gets the type of chart series included in this group.
    /// </summary>
    public ChartSeriesType SeriesType { get; }

    /// <summary>
    /// Gets or sets the axis group to which this series group belongs.
    /// </summary>
    public AxisGroup AxisGroup { get; set; }

    /// <summary>
    /// Provides access to properties of the X axis of this series group.
    /// </summary>
    public ChartAxis AxisX { get; }

    /// <summary>
    /// Provides access to properties of the Y axis of this series group.
    /// </summary>
    public ChartAxis AxisY { get; }

    /// <summary>
    /// Gets a collection of series that belong to this series group.
    /// </summary>
    public ChartSeriesCollection Series { get; }

    /// <summary>
    /// Gets or sets the percentage of how much the series bars or columns overlap.
    /// </summary>
    /// <remarks>
    /// Applies to series groups of all bar and column types.
    /// The range of acceptable values is from -100 to 100 inclusive. A value of 0 indicates that there is no
    /// space between bars/columns. If the value is -100, the distance between bars/columns is equal to their width.
    /// A value of 100 means that the bars/columns overlap completely.
    /// </remarks>
    public int Overlap { get; set; }

    /// <summary>
    /// Gets or sets the percentage of gap width between chart elements.
    /// </summary>
    /// <remarks>
    /// Applies only to series groups of the bar, column, pie-of-bar, pie-of-pie, histogram, box&whisker,
    /// waterfall and funnel types.
    /// The range of acceptable values is from 0 to 500 inclusive. For bar/column-based series groups, the
    /// property represents the space between bar clusters as a percentage of their width. For pie-of-pie and
    /// bar-of-pie charts, this is the space between the primary and secondary sections of the chart.
    /// </remarks>
    public int GapWidth { get; set; }

    /// <summary>
    /// Gets or sets the size of the bubbles as a percentage of their default size.
    /// </summary>
    /// <remarks>
    /// Applies only to series groups of the <see cref="ChartSeriesType.Bubble"/> and
    /// <see cref="ChartSeriesType.Bubble3D"/> types.
    /// The range of acceptable values is from 0 to 300 inclusive.
    /// </remarks>
    public int BubbleScale { get; set; }
}

/// <summary>
/// Represents a type of a chart axis group.
/// </summary>
public enum AxisGroup
{
    /// <summary>
    /// Specifies the primary axis group.
    /// </summary>
    Primary,

    /// <summary>
    /// Specifies the secondary axis group.
    /// </summary>
    Secondary
}

/// <summary>
/// Represents a collection of <see cref="ChartSeriesGroup"/> objects.
/// </summary>
public class ChartSeriesGroupCollection : IEnumerable<ChartSeriesGroup>
{
    /// <summary>
    /// Adds a new series group of the specified series type to this collection.
    /// </summary>
    /// <remarks>
    /// Combo charts can contain series groups only of the following types: area, bar, column, line, pie, scatter,
    /// radar and stock types (except the corresponding 3D series types).
    /// </remarks>
    public ChartSeriesGroup Add(ChartSeriesType seriesType);

    /// <summary>
    /// Removes a series group at the specified index. All child series will be removed from the chart.
    /// </summary>
    /// <remarks>
    /// You cannot remove all series groups. A chart must have at least one series group.
    /// </remarks>
    public void RemoveAt(int index);

    /// <summary>
    /// Returns a <see cref="ChartSeriesGroup"/> at the specified index.
    /// </summary>
    public ChartSeriesGroup this[int index] { get; }

    /// <summary>
    /// Returns the number of series groups in this collection.
    /// </summary>
    public int Count { get; }
}

public class Chart
{
    ...
    /// <summary>
    /// Provides access to a series group collection of this chart.
    /// </summary>
    public ChartSeriesGroupCollection SeriesGroups { get; }
}

This use case explains how to create combo chart with secondary Y axis:

This use case explains how to remove secondary axis:

This use case explains how to configure gap overlap:

This use case explains how to set bubble scale to 200%:

Added an ability to work with SoftEdge effect of a shape

Related issue: WORDSNET-26672

Implemented new public class in Aspose.Words.Drawing namespace:

/// <summary>
/// Represents the soft edge formatting for an object.
/// </summary>
/// <remarks>
/// <p>Use the <see cref="ShapeBase.SoftEdge"/> property to access soft edge properties of an object.
/// You do not create instances of the <see cref="SoftEdgeFormat"/> class directly.</p>
/// </remarks>
public class SoftEdgeFormat

with new public members:

/// <summary>
/// Removes <see cref="SoftEdgeFormat"/> from the parent object.
/// </summary>
public void Remove()
/// <summary>
/// Gets or sets a double value that represents the length of the radius for a soft edge effect in points (pt).
/// The default value is 0.0.
/// </summary>
public double Radius {get; set;}

Also added new public property to ShapeBase class:

/// <summary>
/// Gets soft edge formatting for the shape.
/// </summary>
public SoftEdgeFormat SoftEdge {get;}

This use case explains how to work with the soft edge effect of a shape:

Added public property SvgSaveOptions.MaxImageResolution

Related issue: WORDSNET-26281

A new public property MaxImageResolution has been added to class SvgSaveOptions:

/// <summary>
/// Gets or sets a value in pixels per inch that limits resolution of exported raster images. Default value is zero.
/// </summary>
/// <remarks>
/// <para>
/// If the value of this property is non-zero, it limits resolution of exported raster images.
/// That is, higher-resolution images are resampled down to the limit and lower-resolution images are exported as is.
/// </para>
/// <para>
/// If the value of this property is zero, all raster images are exported without resampling.
/// </para>
/// </remarks>
public int MaxImageResolution { get; set; }

This use case explains how to set a value in pixels per inch that limits resolution of exported raster images:

Added support for shape adjust values

Related issue: WORDSNET-25293

Implemented new public classed in Aspose.Words.Drawing namespace:

/// <summary>
/// Represents a read-only collection of <see cref="Adjustment"/> adjust values that are applied to the specified shape.
/// </summary>
public class AdjustmentCollection
/// <summary>
/// Represents adjustment values that are applied to the specified shape.
/// </summary>
public class Adjustment

Added new public members:

/// <summary>
/// Gets the name of the adjustment.
/// </summary>
public string Name
/// <summary>
/// Gets or sets the raw value of the adjustment.
/// </summary>
/// <remarks>
/// An adjust value is simply a guide that has a value based formula specified.
/// That is, no calculation takes place for an adjust value guide.
/// Instead, this guide specifies a parameter value that is used for calculations within the shape guides.
/// </remarks>
public int Value

Added new public property to Shape class:

/// <summary>
/// Provides access to the adjustment raw values of a shape.
/// For a shape that does not contain any adjustment raw values, it returns an empty collection.
/// </summary>
public AdjustmentCollection Adjustments

This use case explains how to work with adjustment raw values:

Added FileFormatInfo.HasMacros property

Related issue: WORDSNET-26750

Provided capability to check for the presence of VBA macros without loading the document.

A new public property HasMacros has been added to class FileFormatInfo:

/// <summary>
/// Returns <c>true</c> if this document contains a VBA macros.
/// </summary>
public bool HasMacros { get; }

This use case explains how to check for the presence of VBA macros without loading the document:

Implemented a function to eliminate empty pages from the document.

Related issue: WORDSNET-24707

A new public method RemoveBlankPages has been added to class Document:

/// <summary>
/// Removes blank pages from the document.
/// </summary>
/// <remarks>
/// The resulting document will not contain pages considered to be blank while other content,
/// including numbering, headers/footers and overall layout should remain unchanged.
///
/// Page is considered to be blank when body of the page have no visible content, for example,
/// empty table having no borders will be considered as invisible and therefore page will be detected as blank.
/// </remarks>
/// <returns>List of page numbers has been considered as blank and removed.</returns>
public List<int> RemoveBlankPages()

Supported keeping of source numbering while inserting a document using LINQ Reporting Engine

Related issue: WORDSNET-26482

Starting from Aspose.Words 24.5, you can control how numbered lists are processed while inserting a document using LINQ Reporting Engine. By default, numbered lists from a template document are continued when their identifiers match those from a document being inserted. However, if numbering for content being inserted should be separated and kept as is, this can be done by applying a sourceNumbering switch as follows.

This use case explains how keep source numbering while inserting a document using LINQ Reporting Engine:

The logic for two layout warnings related to table layouts has been changed to match the current AW behavior. The changes were integrated as a part of WORDSNET-24989

  • Cell spacing warning “Cell spacing is not supported. The table will be rendered without cell spacing.” has been changed to “Cell spacing is not rendered for a table not supported by the new table layout logic.”. The warning is only issued when cell spacing is not actually rendered as it is currently rendered for most of the tables, apart from a few cases.

  • Autofit table warning “Table column widths may need to be calculated. Rendered column widths could differ.” has been changed to “A table not supported by the new table layout logic is encountered. Older logic that has known issues is applied.” as table column widths are now always re-calculated for tables supported by the new table layout logic. The warning is only issued for top-level tables not supported by the new logic which is a relatively minor proportion. The logic is not issued for tables nested in other tables, as there can be many nested tables and the whole set is either handled by the new logic or not, so a single warning for the top-level table should be sufficient.