Browse our Products

Aspose.Words for .NET 25.9 Release Notes

Major Features

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

  • Document Loading: Introduced a new RecoveryMode option for greater control when opening corrupted documents.
  • Shape & Text Formatting: Enhanced control over shadow effects with the addition of new public properties.
  • Markdown Export: Added support for exporting mathematical equations (Office Math) to LaTeX expressions.
  • Font Handling: Improved diagnostics by introducing typed warnings for font substitution, allowing for more robust error handling.

Full List of Issues Covering all Changes in this Release

Expand to view the full list of issues.
KeySummaryCategory
WORDSNET-28560Opening of a corrupted documentNew Feature
WORDSNET-28356Get list of all used and substituted fonts in the documentNew Feature
WORDSNET-28492Export oMath (OOXML Math) as LaTex based expressions upon converting to MDNew Feature
WORDSNET-28384Provide API to set Shadow Color on ShapeNew Feature
WORDSNET-27685Image resolution different between MS Word and Aspose.Words when converting DOCX to HTMLBug
WORDSNET-28528All move revisions are marked only as MovedTo and no corresponding MovedFrom revisions appear in the resulting documentBug
WORDSNET-28587MAUI release build failed with unexpected trimming error after update to Aspose.Words 25.7 from 25.6Bug
WORDSNET-28549System.ArgumentException : An item with the same key has already been addedBug
WORDSNET-28536Exception is thrown upon rendering documentBug
WORDSNET-28515ArgumentException is thrown upon rendering documentBug
WORDSNET-28479ArgumentException is thrown upon updating fieldsBug
WORDSNET-28593Font Ligature feature may not be appliedBug
WORDSNET-28396IllegalArgumentException upon convertion to PDFBug
WORDSNET-27495Part of repeated text is not recognized as headerBug
WORDSNET-28267Pattern fill from SVG is rendered inaccuratelyBug
WORDSNET-28458DivideByZeroException is thrown upon rendering documentBug
WORDSNET-28511Chinese text is invisible after renderingBug
WORDSNET-28443Track changes are lost in dropdown content controls mapped to Custom XML when saving DOCXBug
WORDSNET-28490Incorrect scaling of the “Date” axis, if major unit is “Year”Bug
WORDSNET-28473Different spaces between parentheses and colon for chinese symbolsBug
WORDSNET-26364Chart labels and plot area are rendered incorrectlyBug
WORDSNET-27887Execution of the ‘PageCount’ property getter leads to infinite program lock in 25.2Bug
WORDSNET-28472Table borders are improperly imported from RTFBug
WORDSNET-28445The footer is moved down using Merger.Merge and KeepSourceLayoutBug
WORDSNET-28554Table cell background is lost after reading RTFBug
WORDSNET-26656Document comparison does not show the hyperlink object changeBug
WORDSNET-28312Incorrect text position of conversion to pdfBug
WORDSNET-28548ArithmeticException is thrown upon rendering document.Bug
WORDSNET-26580Table layout is changed after converting PDF to DOCXBug
WORDSNET-27758Removing FieldListNum is not properly tracked by Aspose.WordsBug
WORDSNET-28542Removing and adding child nodes to Date SDT produced invalid outputBug
WORDSNET-28556DOCX to PDF: Text positioning bugBug
WORDSNET-28416Shape position changed due to PDF conversionBug
WORDSNET-26363Incorrect labels on the X axis of a chartBug
WORDSNET-28539WordOpenXMLMinimal output includes document-level protection in protected DOCXBug
WORDSNET-28533UpdatePageLayout raises InvalidOperationExceptionBug
WORDSNET-27832Error in OCR of png fileBug
WORDSNET-28333Consider including .NET version in DLL’s file descriptionBug
WORDSNET-28405Bidi text is imported incorrectly in SVGBug
WORDSNET-27769Incorrect cross-reference stream processingBug
WORDSNET-28467Wavy border is rendered incorrectlyBug
WORDSNET-28526The distance to the axis labels changes after converting to PDFBug
WORDSNET-28193Incorrect position of vertical axis title of “Waterfall” chartBug
WORDSNET-28485Part of content is missed after importing MHTMLBug
WORDSNET-26999Exception when reflowing footnote separatorBug
WORDSNET-28534Create semiannual forecastBug
WORDSNET-28510SVG is not imported from HTMLBug
WORDSNET-28525The HarfBuzz add-on component is missing /guard:cfBug
WORDSNET-28527Emphasis are lost for the Chinese charactersBug
WORDSNET-28506Formula fields are updated improperlyBug
WORDSNET-28509REF field is not showing error for missed bookmark after updating fieldsBug
WORDSNET-28375Table formatting is broken after comparing documentBug
WORDSNET-27962UpdateFields() removes form field content in PDF outputBug
WORDSNET-28083Mail Merge behavior changedBug
WORDSNET-28543ArgumentException is thrown upon executing mail mergeBug
WORDSNET-28170Setting FieldHyperlink.SubAddress to empty string creates a redundant \l flag with empty valueBug
WORDSNET-28469Text formatting in SVG is not preserved after importingBug
WORDSNET-28530DOCX to HTML: Title missing from header in outputBug
WORDSNET-26809Parentheses are exported improperly from MathMLBug
WORDSNET-28589Part of content is moved to next pageBug

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 25.9. 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.

Introduced a new RecoveryMode option for greater control when opening corrupted documents.

Related issue: WORDSNET-28560

A new public option RecoveryMode has been added to LoadOptions class:

/// <summary>
/// Defines how the document should be handled if errors occur during loading.  
/// Use this property to specify whether the system should attempt to recover the document 
/// or follow another defined behavior.  
/// The default value is <see cref="DocumentRecoveryMode.TryRecover"/>. 
/// </summary>
public DocumentRecoveryMode RecoveryMode { get; set; }

/// <summary>
/// Specifies the available recovery options when a document encounters errors during loading.
/// </summary>
public enum DocumentRecoveryMode
{
    /// <summary>
    /// No recovery is attempted.  
    /// If the document is invalid, loading will fail with an error.
    /// </summary>
    None,

    /// <summary>
    /// Attempts to recover the document while preserving as much data as possible.
    /// </summary>
    TryRecover,
}

This use case explains how to define the recovery mode behavior when loading a document:

Enhanced control over shadow effects with the addition of new public properties.

Related issue: WORDSNET-28384

A new public properties Color and Transparency has been added to class ShadowFormat.

/// <summary>
/// Gets or sets a <see cref="System.Drawing.Color"/> object that represents the color for the shadow.
/// The default value is <see cref="System.Drawing.Color.Black"/>.
/// </summary>
public Color Color { get; set; }

/// <summary>
/// Gets or sets the degree of transparency for the shadow effect as a value between 0.0 (opaque) and 1.0 (clear).
/// The default value is 0.0.
/// </summary>
public double Transparency { get; set; }

This use case explains how to work with Colors and Transparency:

Added support for exporting mathematical equations (Office Math) to LaTeX expressions.

Related issue: WORDSNET-28492

A new public enumeration MarkdownOfficeMathExportMode has been added:

/// <summary>
/// Export OfficeMath as LaTeX.
/// </summary>
Latex

This use case explains how to export oMath as LaTex based expressions into Markdown:

Improved diagnostics by introducing typed warnings for font substitution, allowing for more robust error handling.

Related issue: WORDSNET-28356

New public class FontSubstitutionWarningInfo and FontSubstitutionReason enum were added.

FontSubstitutionWarningInfo contains additional information about font substitution.

/// <summary>
/// Contains information about a font substitution warning that Aspose.Words issued during document loading or saving.
/// </summary>
public class FontSubstitutionWarningInfo : WarningInfo
{
    /// <summary>
    /// Font substitution reason.
    /// </summary>
    public FontSubstitutionReason Reason { get; }
    /// <summary>
    /// Requested font family name.
    /// </summary>
    public string RequestedFamilyName { get; }
    /// <summary>
    /// Indicates whether bold style was requested.
    /// </summary>
    public bool RequestedBold { get; }
    /// <summary>
    /// Indicates whether italic style was requested.
    /// </summary>
    public bool RequestedItalic { get; }
    /// <summary>
    /// Resolved font.
    /// </summary>
    public PhysicalFontInfo ResolvedFont { get; }
}

/// <summary>
/// Specifies the reason of font substitution.
/// </summary>
public enum FontSubstitutionReason
{
    /// <summary>
    /// Font substitution by alternative name from the document.
    /// </summary>
    AlternativeName,
    /// <summary>
    /// Font substitution by font name rule.
    /// </summary>
    FontNameSubstitutionRule,
    /// <summary>
    /// Font substitution by font config rule.
    /// </summary>
    FontConfigSubstitutionRule,
    /// <summary>
    /// Font substitution by table rule.
    /// </summary>
    TableSubstitutionRule,
    /// <summary>
    /// Font substitution by font info rule.
    /// </summary>
    FontInfoSubstitutionRule,
    /// <summary>
    /// Font substitution by default font rule.
    /// </summary>
    DefaultFontSubstitutionRule,
    /// <summary>
    /// Font substitution with the first available font.
    /// </summary>
    FirstAvailableFont
}

This use case explains how to use FontSubstitutionWarningInfo: