Browse our Products

Aspose.Words for .NET 24.7 Release Notes

Major Features

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

  • Accessible PDF Export: Export documents to PDF/UA-2 format, ensuring accessibility for users with disabilities.
  • Enhanced XLSX Export: The exporter can now automatically detect the datetime format for seamless data export.
  • ActiveX Control Management: You can now modify properties of ActiveX type objects, providing greater control over their behavior.
  • Granular Markdown Export: The LinkExportMode property within MarkdownSaveOptions allows you to control how links are exported in Markdown format.
  • ActiveX Radio Button Interaction: Set the value of radio button ActiveX controls, enabling dynamic interactions.
  • ActiveX Checkbox Toggling: Easily set the checked state (checked or unchecked) of ActiveX checkboxes.
  • Chart Data Label Customization: Control the orientation and rotation of data labels within charts for enhanced presentation.
  • VBA Project Protection Check: A new public property VbaProject.IsProtected allows you to verify if a VBA project is protected.
  • Custom Number Style Format for List Levels: The public property ListLevel.CustomNumberStyleFormat now includes a setter, enabling you to define custom number styling for list levels.

Full List of Issues Covering all Changes in this Release

Expand to view the full list of issues.
KeySummaryCategory
WORDSNET-12826Provide ability to set a given ActiveX checkbox to checked or uncheckedNew Feature
WORDSNET-26871Implement export to PDF/UA-2New Feature
WORDSNET-15386Add feature to change the text direction of DatalabelNew Feature
WORDSNET-27132Provide the ability to control LinkExportMode in MarkdownSaveOptionsNew Feature
WORDSNET-21821Support for ActiveX TextBox - Change the properties of ActiveX type objectsNew Feature
WORDSNET-24092Provide API in Aspose.Words to convert PDF directly to Fixed Page formatsNew Feature
WORDSNET-26289Consider providing VbaProject.IsProtected propertyNew Feature
WORDSNET-26680Chart Datalabel font controlNew Feature
WORDSNET-26849Support font for East Asian text in output XLSX documentsNew Feature
WORDSNET-22880DOCX to PDF conversion issue with line rendering and labels positionNew Feature
WORDSNET-26626Support the 3D camera settings for DML group when renderingNew Feature
WORDSNET-27083Implement page enumeraton in PageSet classNew Feature
WORDSNET-27120Update footnote logic to handle advanced cases related to floatersNew Feature
WORDSNET-13551Provide ability to modify value of radio button ActiveX controlEnhancement
WORDSNET-26900Incorrect footnote position in presence of a wrapped shape in the footer causes layout differencesEnhancement
WORDSNET-23532DOCX to PDF text overlap issueEnhancement
WORDSNET-24270Horizontal Axis labels are rendered improperlyEnhancement
WORDSNET-22786Labels on charts not aligned properlyEnhancement
WORDSNET-27043Conversion management to XLSX via XlsxSaveOptionsEnhancement
WORDSNET-26937SVG has black background after renderingBug
WORDSNET-26264Image’s size isn’t preserved after HTM to HTML conversionBug
WORDSNET-26902Part of content is moved to next pageBug
WORDSNET-27058Table width is incorrect upon renderingBug
WORDSNET-24465Content shifted from third page to secondBug
WORDSNET-27027Page breaks are not recognized correctlyBug
WORDSNET-27094Table is moved to previous page after conversion from PDF to WordBug
WORDSNET-26696GIF is converted to PNG after updating fieldsBug
WORDSNET-26380DOCX to XLSX conversion issue with date formatBug
WORDSNET-24808Part of content is moved to previous pageBug
WORDSNET-27053Aspose.Words can’t open specific documentsBug
WORDSNET-26398Consider exposing setter for ListLevel.CustomNumberStyleFormat propertyBug
WORDSNET-26239Font size and position of REF field is changed after updating fieldsBug
WORDSNET-26956Words count is calculated improperly in LinuxBug
WORDSNET-26909Invalid numbering culture in DOCX to PDF conversionBug
WORDSNET-26994Aspose.Words hangs when saving DOC to JPEGBug
WORDSNET-27064Image quality degrades after exporting to fixed formatsBug
WORDSNET-21412Style name is changed after DOCX to HTML to DOCX conversionBug
WORDSNET-14287MHTML to PDF export - The body text is cut off from left and right sidesBug
WORDSNET-25079Comparing documents, comments are not taken into considerationBug
WORDSNET-26517Incorrect caclculation of formula width in the cellBug
WORDSNET-26725Content is pushed to the next page in layoutBug
WORDSNET-26269Comparison deletes unchanged wordBug
WORDSNET-26980HTML format have detected improperlyBug
WORDSNET-26090Aspose.Words hangs upon calling AcceptAllRevisionsBug
WORDSNET-27038Transparency in metafile is lost after renderingBug
WORDSNET-26950Part of content is moved to next pageBug
WORDSNET-26488Shape is lost after open/save WordML documentBug
WORDSNET-26537Bottom of a textbox is clipped upon renderingBug
WORDSNET-25638Barcode looks improperly when printed to converted to imageBug
WORDSNET-21475DOCX to PDF conversion issue with content position and page countBug
WORDSNET-27107FileCorruptedException is thrown upon loading MHTML documentBug
WORDSNET-26985DOCX to JPG: Output corrupted in ARM environmentBug
WORDSNET-27114Part of content is moved to previous pageBug
WORDSNET-27046A line is on a different page on conversion to PDFBug
WORDSNET-25296DOCX to PDF: Incorrect text alignmentBug
WORDSNET-26988Exception is thrown when converting DOCX to AZW3Bug
WORDSNET-26858RemoveBlankPages does not remove all blank pagesBug
WORDSNET-27127NullReferenceException is thrown upon calling RemoveBlankPages methodBug
WORDSNET-23740Track revisions works not the same as in MS Word when use Replace functionBug
WORDSNET-26924Find/replace paces replacement before the matched text instead of after as MS Word doesBug
WORDSNET-27115RTF to DOCX: Font Selection IssueBug
WORDSNET-26740FileCorruptedException is thrown upon loading ODT documentBug
WORDSNET-24424Incorrect characters conversion of docx-to-pdf conversionBug
WORDSNET-27089Parameter “position” of rPr is not taken into account when rendering math textBug
WORDSNET-26776Table should not be balancedBug
WORDSNET-27097FileCorruptedException is thrown upon loading FlatOPC documentBug
WORDSNET-26921ArgumentException is thrown upon comparing documentBug
WORDSNET-27112Document.Compare: “Cannot insert a node of this type at this location.” exceptionBug
WORDSNET-27090Output barcode size is different from the original one in MS WordBug
WORDSNET-27108FileCorruptedException is thrown upon loading DOC documentBug
WORDSNET-27079System.NullReferenceException is thrown when call UpdatePageLayout in 24.6Bug
WORDSNET-26070Added substitutes for font do not work properlyBug
WORDSNET-23493Language tag is not exported to PDF logical structureBug
WORDSNET-26940Table is moved to previous page upon rendering documentBug
WORDSNET-27023Content is lost after loading HTMLBug
WORDSNET-27022MathML is read improperly from HTMLBug
WORDSNET-27103Incorrect result on Document.Save if callback existsBug
WORDSNET-27092Chinese text is distributed improperly in justified paragraphBug
WORDSNET-26759RTF to PDF: Logo in header section is not retaindBug
WORDSNET-27082Missed glyphs are rendered if PdfSaveOptions.PreserveFormFields is enabledBug
WORDSNET-27081Redundant symbol is rendered in PDF when PreserveFormFields is enabledBug
WORDSNET-26616Shape is rendered upside downBug
WORDSNET-26738TextShapingFactory overrides SaveOptions.FontEmbeddingMode settingBug
WORDSNET-27005StackOverflowException is thrown upon converting DOC to JPEGBug
WORDSNET-27084APS simplification produces the incorrectly transformed canvases in some casesBug
WORDSNET-25783Table does not fit into page after inserting to another documentBug
WORDSNET-27048Incorrect alignment of the text element in inline formulasBug
WORDSNET-26910Combo chart displays wrong when export as PDFBug
WORDSNET-26974Cambodian Font Rendering Issue in DOCX to PDF ConversionBug
WORDSNET-26778Part of text disappears after rendering document created by WPSBug
WORDSNET-26841Text is wrapped improperly upon renderingBug
WORDSNET-27051InvalidOperationException is thrown upon execution mail merge with regions if region is both IF field code and it’s resultBug
WORDSNET-27049Can’t get list label value for paragraph in revisionBug
WORDSNET-26920figcaption position is incorrect after converting HTML to WordBug
WORDSNET-26330Table corrupted after adding Content ControlBug
WORDSNET-18635SVG has issues when importing a HTMLBug
WORDSNET-27054DOCX to HTML: Numbered heading created as ol instead of h2Bug
WORDSNET-27139NullReferenceException is thrown upon rendering documentBug
WORDSNET-27093NullReferenceException occurs upon rendering documentBug
WORDSNET-27142Doc to PDF conversion fails with “Object reference not set to an instance of an object”Bug
WORDSNET-27128DOCX to PDF NullReferenceException is thrown upon rendering documentBug
WORDSNET-27124NullReferenceException is thrown upon rendering documentBug
WORDSNET-12250Font rendering issue with Arabic textBug
WORDSNET-12257Simplified Arabic’ does not render correctly in PDFBug

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 24.7. 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 automatically determine datetime format when exporting to XLSX

Related issue: WORDSNET-26380

Implemented the ability to automatically determine the datetime format when exporting to XLSX. The new public property XlsxSaveOptions.DateTimeParsingMode can be used to enable the automatic determining.

The following changes have been made:

public class XlsxSaveOptions
{
    ...

    /// <summary>
    /// Gets or sets the mode that specifies how document text is parsed to identify date and time values.
    /// The default value is <see cref="XlsxDateTimeParsingMode.UseCurrentLocale"/>.
    /// </summary>
    public XlsxDateTimeParsingMode DateTimeParsingMode { get; set; }
}

/// <summary>
/// Specifies how document text is parsed to identify date and time values.
/// </summary>
public enum XlsxDateTimeParsingMode
{
    /// <summary>
    /// The datetime format set for the current thread is used first to parse string values. If the parsing fails,
    /// other common datetime formats are tried.
    /// </summary>
    UseCurrentLocale,

    /// <summary>
    /// The datetime format used in a document is determined automatically. This may take additional time.
    /// </summary>
    Auto
}

This use case explains how to use DateTimeParsingMode:

Added ability to change the properties of ActiveX type objects

Related issue: WORDSNET-21821

Implemented new public properties in Aspose.Words.Drawing.Ole.Forms2OleControl class:

/// <summary>
/// Gets or sets a foreground color of the control.
/// The default value depends on a type of the control.
/// </summary>
public Color ForeColor {get; set;}
/// <summary>
/// Gets or sets a background color of the control.
/// The default value depends on a type of the control.
/// </summary>
public Color BackColor {get; set;}
/// <summary>
/// Gets or sets a width of the control in points.
/// </summary>
public double Width {get; set;}
/// <summary>
/// Gets or sets a height of the control in points.
/// </summary>
public double Height {get; set;}

This use case explains how to change properties of ActiveX controls:

Added ability to control LinkExportMode in MarkdownSaveOptions

Related issue: WORDSNET-27132

Implemented new public property in Aspose.Words.Saving.MarkdownSaveOptions class:

/// <summary>
/// Specifies how links will be written to the output file.
/// Default value is <see cref="MarkdownLinkExportMode.Auto"/>.
/// </summary>
public MarkdownLinkExportMode LinkExportMode { get; set; }

This use case explains how to change links export mode while saving to Markdown:

Added ability to modify value of radio button ActiveX control

Related issue: WORDSNET-13551

Implemented new public class Aspose.Words.Drawing.Ole.OptionButtonControl:

/// <summary>
/// The OptionButton control enables a single choice in a limited set of mutually exclusive choices.
/// </summary>
public class OptionButtonControl : MorphDataControl

with the following public property:

/// <summary>
/// Gets or sets a boolean value indicating either this <see cref="OptionButtonControl"/> is selected or not.
/// </summary>
/// <remarks>
/// Note, this property allows you to select multiple items in a group of <see cref="OptionButtonControl"/>
/// with the same <see cref="Forms2OleControl.GroupName"/>. It is up to you to take care of deselecting a previously
/// selected item when you make this <see cref="OptionButtonControl"/> selected.
/// </remarks>
public bool Selected {get; set;}

This use case explains how to change value of radio button ActiveX control:

Added ability to set a given ActiveX checkbox to checked or unchecked

Related issue: WORDSNET-12826

Implemented new public class Aspose.Words.Drawing.Ole.CheckBoxControl:

/// <summary>
/// The CheckBox control toggles a value.
/// </summary>
public class CheckBoxControl : MorphDataControl

with the following public property:

/// <summary>
/// Gets or sets a boolean value indicating either this <see cref="CheckBoxControl"/> is checked or not.
/// The default value is <c>false</c>.
/// </summary>
public bool Checked {get; set;}

This use case explains how to change state of the CheckBox ActiveX control:

Added ability to set orientation and rotation of chart data labels

Related issue: WORDSNET-26680

The new properties Orientation and Rotation have been added to the ChartDataLabel and ChartDataLabelCollection classes:

public class ChartDataLabel
{
    ...

    /// <summary>
    /// Gets or sets the orientation of the label text.
    /// </summary>
    /// <remarks>
    /// The default value is <see cref="ShapeTextOrientation.Horizontal"/>.
    /// </remarks>
    public ShapeTextOrientation Orientation { get; set; }

    /// <summary>
    /// Gets or sets the rotation of the label in degrees.
    /// </summary>
    /// <remarks>
    /// The range of acceptable values is from -180 to 180 inclusive. The default value is 0.
    /// If the <see cref="Orientation"/> value is <see cref="ShapeTextOrientation.Horizontal"/>, the
    /// label shape, if it exists, is rotated along with the label text. Otherwise, only the label text is rotated.
    /// </remarks>
    public int Rotation { get; set; }
}

public class ChartDataLabelCollection
{
    ...

    /// <summary>
    /// Gets or sets the text orientation of the data labels of the entire series.
    /// </summary>
    /// <remarks>
    /// The default value is <see cref="ShapeTextOrientation.Horizontal"/>.
    /// </remarks>
    public ShapeTextOrientation Orientation { get; set; }

    /// <summary>
    /// Gets or sets the rotation of the data labels of the entire series in degrees.
    /// </summary>
    /// <remarks>
    /// The range of acceptable values is from -180 to 180 inclusive. The default value is 0.
    /// If the <see cref="Orientation"/> value is <see cref="ShapeTextOrientation.Horizontal"/>, label shapes,
    /// if they exist, are rotated along with the label text. Otherwise, only the label text is rotated.
    /// </remarks>
    public int Rotation { get; set; }
}

/// <summary>
/// Specifies orientation of text in shapes.
/// </summary>
public enum ShapeTextOrientation
{
    /// <summary>
    /// Text is arranged horizontally (lr-tb).
    /// </summary>
    Horizontal,

    /// <summary>
    /// Text is rotated 90 degrees to the right to appear from top to bottom (tb-rl).
    /// </summary>
    Downward,

    /// <summary>
    /// Text is rotated 90 degrees to the left to appear from bottom to top (bt-lr).
    /// </summary>
    Upward,

    /// <summary>
    /// Far East characters appear vertical, other text is rotated 90 degrees
    /// to the right to appear from top to bottom (tb-rl-v).
    /// </summary>
    VerticalFarEast,

    /// <summary>
    /// Far East characters appear vertical, other text is rotated 90 degrees
    /// to the right to appear from top to bottom vertically, then left to right horizontally  (tb-lr-v).
    /// </summary>
    VerticalRotatedFarEast,

    /// <summary>
    /// Text is vertical, with one letter on top of the other.
    /// </summary>
    WordArtVertical,

    /// <summary>
    /// Text is vertical, with one letter on top of the other, then right to left horizontally.
    /// </summary>
    WordArtVerticalRightToLeft
}

This use case explains how to set data label orientation and rotation:

Added export to PDF/UA-2

Related issue: WORDSNET-26871

Added support for export to PDF/UA-2 format. New values added to PdfCompliance enum:

public enum PdfCompliance
{
    /// <summary>
    /// The output file will comply with both PDF/A-4 (ISO 19005-4:2020) and PDF/UA-2 (ISO 14289-2:2024) standards.
    /// PDF/A-4 has the objective of preserving document static visual appearance over time, independent of the tools
    /// and systems used for creating, storing or rendering the files. The primary purpose of PDF/UA is to define how
    /// to represent electronic documents in the PDF format in a manner that allows the file to be accessible.
    /// </summary>
    /// <remarks>
    /// Note that exporting the document structure significantly increases the memory consumption, especially
    /// for the large documents.
    /// </remarks>
    PdfA4Ua2,
    /// <summary>
    /// The output file will comply with the PDF/UA-2 (ISO 14289-2:2024) standard.
    /// The primary purpose of PDF/UA is to define how to represent electronic documents in the PDF format in a
    /// manner that allows the file to be accessible.
    /// </summary>
    /// <remarks>
    /// Note that exporting the document structure significantly increases the memory consumption, especially
    /// for the large documents.
    /// </remarks>
    PdfUa2
}

Also PdfCompliance.Pdf20 and PdfCompliance.PdfA4 export is switched from PDF 1 logical structure to PDF 2 logical structure. Now PDF 1 logical structure is used for PdfCompliance.Pdf17, PdfCompliance.PdfA1b, PdfCompliance.PdfA1a, PdfCompliance.PdfA2u, PdfCompliance.PdfA2a, PdfCompliance.PdfUa1 and PDF 2 logical structure is used for PdfCompliance.Pdf20, PdfCompliance.PdfA4, PdfCompliance.PdfA4Ua2, PdfCompliance.PdfUa2.

Added public property VbaProject.IsProtected

Related issue: WORDSNET-26289

A public property getter IsProtected has been added to the Aspose.Words.Vba.VbaProject class:

/// <summary>
/// Shows whether the <see cref="VbaProject"/> is password protected.
/// </summary>
public bool IsProtected { get; }

This use case explains how to know if VbaProject is password protected or not:

Added setter for public ListLevel.CustomNumberStyleFormat property

Related issue: WORDSNET-26398

A public property setter has been added to the ListLevel class:

/// <summary>
/// Gets or sets the custom number style format for this list level. For example: "a, ç, ĝ, ...".
/// </summary>
public string CustomNumberStyleFormat { set; }

This use case explains how to to set customer number style format: