Browse our Products

Aspose.Words for .NET 25.7 Release Notes

Major Features

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

  • AI Features: Added the ability to use self-hosted LLM implementations, allowing for greater privacy and control over AI-driven features.
  • Replacing: Introduced the ReplacingArgs.MatchEndNode public property to provide developers with more precise control during text replacement operations.
  • Table Management: Added the Row.Hidden public property, enabling the ability to programmatically show or hide specific rows within a table.
  • Font Rendering: Implemented initial support for OpenType Font Variations, allowing for richer and more flexible typographic display.

Full List of Issues Covering all Changes in this Release

Expand to view the full list of issues.
KeySummaryCategory
WORDSNET-25899Add public API to mark row as hiddenNew Feature
WORDSNET-28192Support XLSX header/footers in XLSX exportNew Feature
WORDSNET-28298Allow to use self-hosted LLM implementation in Aspose.WordsNew Feature
WORDSNET-28070Consider providing a property in ReplacingArgs that will return the node that contains the end of the matchNew Feature
WORDSNET-18581Content are rendered outside the page at right side in PDFEnhancement
WORDSNET-28159Table left indent is incorrect after renderingEnhancement
WORDSNET-28335Consider Dropping Client Profile Support for Aspose.Words .NET 3.5 and 4.0Enhancement
WORDSNET-28008MS Word doesn’t write ‘w:space’ attribute for last ‘w:col’ elementBug
WORDSNET-28406System.NullReferenceException when comparing documentsBug
WORDSNET-28404StackOverflowException during DOCX to PDF conversion when PreserveFormFields is enabledBug
WORDSNET-28331StackOverflowException is thrown upon rendering document to PDF with PdfSaveOptions.PreserveFormFields enabledBug
WORDSNET-28357Stack overflow when converting DOCX to PDFBug
WORDSNET-28270List item formatting is changed after open/save ODTBug
WORDSNET-28209Setting TableStyle.Bidi makes the table LTRBug
WORDSNET-28393Unexpected Bookmark Creation When Mapping Identical Content Controls to the Same Custom XML PartBug
WORDSNET-27282Fix warnings during conversionBug
WORDSNET-27917Aspose.Words hangs during rendering to PDFBug
WORDSNET-28400Infinite loop upon conversion to PDFBug
WORDSNET-28369Rendering process hangs upon converting documentBug
WORDSNET-28332Aspose.Words hangs upon rendering document with hyphenationBug
WORDSNET-28321Aspose.Words hangs upon rendering document when hyphenation dictionary is specifiedBug
WORDSNET-28169UpdatePageLayout hangs upon conversionBug
WORDSNET-28152Hangs upon rendering documentBug
WORDSNET-28141Aspose.Words hangs upon rendering documentBug
WORDSNET-28136Rendering hangs upon conversionBug
WORDSNET-27283Analyze the System.IO.Compression version inside Pdf2WordBug
WORDSNET-28221EmbeddedFontCache throws ArgumentNullException in AOT configBug
WORDSNET-21505Changing the “SelectedValue” on ListItems collection does not create a revisionBug
WORDSNET-28202Incorrect date header rendering in PDF outputBug
WORDSNET-28168Chart is rendered as not filled with dataBug
WORDSNET-28309Text wrapped incorrectly due to inaccurate shrinking of Courier New spacesBug
WORDSNET-28235“Asian typography/Allow Latin text to wrap in the middle of a word” option is ignored upon renderingBug
WORDSNET-28306MS Excel raises an error when opening output XLSXBug
WORDSNET-28230Incorrect content area width for non-rectangular DML shapesBug
WORDSNET-28266Text misalignment upon SVG renderingBug
WORDSNET-28368Investigation: InsertHtml to SDT: Content not insertedBug
WORDSNET-28059Aspose.Words.LowCode.Merger throws an XmlExceptionBug
WORDSNET-28344Track changes are lost in dropdown content controls mapped to Custom XML when saving DOCXBug
WORDSNET-27988Building document layout of document with batch of inline images is slowBug
WORDSNET-28379List levels formatting in the document produced by MS Word differs from what AW generatesBug
WORDSNET-27748Formatting of list levels in the document produced by MS Word differsBug
WORDSNET-28351Import of MsoHtml columns differs from MS Word’s resultBug
WORDSNET-28350Mismatch in Column Import from MsoHtml vs. MS WordBug
WORDSNET-28326Inconsistent Column Rendering: MsoHtml Import vs. WordBug
WORDSNET-28325MsoHtml Column Import Produces Different Results than WordBug
WORDSNET-28324Discrepancy in Column Layout Between MsoHtml and MS Word ImportBug
WORDSNET-28343Line break between text and shape is lost after extracting pageBug
WORDSNET-28337DOCX to EPUB: Image not rendered correctlyBug
WORDSNET-28353DOCX to MD: Links not working in outputBug
WORDSNET-28339Code example for WarningInfoCollection is incorrectBug
WORDSNET-28281Import of MsoHtml lists differs from MS Word’s resultBug
WORDSNET-28280Discrepancy in Column Layout Between MsoHtml and MS Word ImportBug
WORDSNET-28279MsoHtml Column Import Produces Different Results than WordBug
WORDSNET-28277Inconsistent Column Rendering: MsoHtml Import vs. WordBug
WORDSNET-28275Mismatch in Column Import from MsoHtml vs. MS WordBug
WORDSNET-27745Add support for loading of lists from headers/footersBug
WORDSNET-28362Shaped text isn’t rendered correctly if text has bordersBug
WORDSNET-28158Table row on a different page on conversion to PDFBug
WORDSNET-26901Part of content is moved to next pageBug
WORDSNET-28341Size of single line legendBug
WORDSNET-28264Exception when saving a document in another thread after ExtractPagesBug
WORDSNET-28297Layout of legend entriesBug
WORDSNET-28204Y-axis labels are shifter and partially cut offBug
WORDSNET-27421Table layout is broken after removing SDTsBug
WORDSNET-28287Aspose.Words converting vs and MS Word convertingBug
WORDSNET-27309Image is inserted upside-down when setting fill imageBug
WORDSNET-28389Duplicated table content upon DOCX to PDF conversionBug
WORDSNET-27722Paragraph alignment is changed after appending documentBug
WORDSNET-27689LST to DOC: Incorrect indentation and Blank pages addedBug
WORDSNET-28189Words count in the document with custom list labels is incorrectBug

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 25.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 the ability to use self-hosted LLM implementations, allowing for greater privacy and control over AI-driven features.

Related issue: WORDSNET-28298

Added new members into Aspose.Words.AI.AiModel class:

Added protected properties:

/// <summary>
/// Gets model name.
/// </summary>
protected abstract string Name { get; }
/// <summary>
/// Gets URL of the model.
/// </summary>
protected abstract string Url { get; }

Added public methods (instead of same methods of obsolete IAiModelText interface):

/// <summary>
/// Generates a summary of the specified document, with options to adjust the length of the summary.
/// This operation leverages the connected AI model for content processing.
/// </summary>
/// <param name="sourceDocument">The document to be summarized.</param>
/// <param name="options">Optional settings to control the summary length and other parameters.</param>
/// <returns>A summarized version of the document's content.</returns>
public abstract Document Summarize(Document sourceDocument, SummarizeOptions options = null);
/// <summary>
/// Generates summaries for an array of documents, with options to control the summary length and other settings.
/// This method utilizes the connected AI model for processing each document in the array.
/// </summary>
/// <param name="sourceDocuments">An array of documents to be summarized.</param>
/// <param name="options">Optional settings to control the summary length and other parameters</param>
/// <returns>A summarized version of the document's content.</returns>
public abstract Document Summarize(Document[] sourceDocuments, SummarizeOptions options = null);
/// <summary>
/// Checks grammar of the provided document.
/// This operation leverages the connected AI model for checking grammar of document.
/// </summary>
/// <param name="sourceDocument">The document being checked for grammar.</param>
/// <param name="options">Optional settings to control how grammar will be checked.</param>
/// <returns>A new <see cref="Document"/> with checked grammar.</returns>
public virtual Document CheckGrammar(Document sourceDocument, CheckGrammarOptions options = null)
/// <summary>
/// Translates the provided document into the specified target language.
/// This operation leverages the connected AI model for content translating.
/// </summary>
/// <param name="sourceDocument">The document to be translated.</param>
/// <param name="targetLanguage">The language into which the document will be translated.</param>
/// <returns>A new <see cref="Document"/> object containing the translated document.</returns>
public abstract Document Translate(Document sourceDocument, Language targetLanguage);

Also added new protected virtual properties into Aspose.Words.AI.OpenAiModel class:

/// <summary>
/// Gets integer value representing a size of context window of the model.
/// </summary>
protected virtual int ContextWindow { get; }
/// <summary>
/// Gets integer value representing a maximum number of output tokens of the model.
/// </summary>
protected virtual int MaxOutputTokens { get; }

Added new protected virtual properties into Aspose.Words.AI.GoogleAiModel class:

/// <summary>
/// Gets input token limit.
/// </summary>
protected virtual int InputTokenLimit { get; }
/// <summary>
/// Gets output token limit.
/// </summary>
protected virtual int OutputTokenLimit { get; }

Added new protected virtual properties into Aspose.Words.AI.AnthropicAiModel class:

/// <summary>
/// Gets input token limit.
/// </summary>
protected virtual int InputTokenLimit { get; }
/// <summary>
/// Gets output token limit.
/// </summary>
protected virtual int OutputTokenLimit { get; }

This use case explains how to use self-hosted LLM implementations:

Introduced the ReplacingArgs.MatchEndNode public property to provide developers with more precise control during text replacement operations.

Related issue: WORDSNET-28070

Implemented new public property in Aspose.Words.Replacing.ReplacingArgs class:

/// <summary>
/// Gets the node that contains the end of the match.
/// </summary>
public Node MatchEndNode { get; }

This use case explains how to use MatchEndNode public property:

Added the Row.Hidden public property, enabling the ability to programmatically show or hide specific rows within a table.

Related issue: WORDSNET-25899

A new public property Hidden has been added in Row class:

/// <summary>
/// Gets or sets a flag indicating whether this row is hidden or not.
/// </summary>
/// <remarks>
/// Hidden row is not supported for WordML.
/// </remarks>
public bool Hidden

This use case explains how to programmatically show or hide specific rows within a table:

First version of OpenType Font Variation support.

Related issue: WORDSNET-18994

First version of OpenType Font Variation support has been released. Now variable font named instances are correctly laid-out both with and without HarfBuzz shaping and correctly embedded into PDF and XPS.

Limitations:

  • Limited support when rendering to fixed page formats other than PDF and XPS
  • Not supported glyph outlines retrieval (used in cases like WordArt text effects and 3D text effects).

Also OpenType Font Variation support affects font search cache export/import. In order for font variations to work properly, the cache should be generated in the new Aspose.Words version.

Removed obsolete PdfSaveOptions.EmbedAttachments property.

Related issue: WORDSNET-27923

Obsolete property PdfSaveOptions.EmbedAttachments has been removed. PdfSaveOptions.AttachmentsEmbeddingMode should be used instead.