Browse our Products

Aspose.Words for C++ 23.11 Release Notes

Major Features

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

  • Implemented the way to control when certain revision should be accepted/rejected or not by the RevisionCollection.Accept, RevisionCollection.Reject methods.
  • Added an ability to specify the default font formatting for legend entries of DrawingML charts.
  • Provided an ability to write all sections of the document to the same XLSX worksheet.

Full list of changes

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 23.11. 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 public methods RevisionCollection.Accept and RevisionCollection.Reject and interface IRevisionCriteria

New public Accept and Reject methods have been added to the RevisionCollection class:

    /// <summary>
    /// Accepts revisions that match specified criteria.
    /// </summary>
    /// <param name="criteria">
    /// The <see cref="IRevisionCriteria"/> implementation.
    /// </param>
    /// <returns>
    /// The count of accepted revisions.
    /// </returns>
    ASPOSE_WORDS_SHARED_API int32_t Accept(const System::SharedPtr<Aspose::Words::IRevisionCriteria>& criteria);
    
    /// <summary>
    /// Rejects revisions that match specified criteria.
    /// </summary>
    /// <param name="criteria">
    /// The <see cref="IRevisionCriteria"/> implementation.
    /// </param>
    /// <returns>
    /// The count of rejected revisions.
    /// </returns>
    ASPOSE_WORDS_SHARED_API int32_t Reject(const System::SharedPtr<Aspose::Words::IRevisionCriteria>& criteria);

New public IRevisionCriteria interface has been introduced:

    /// <summary>
    /// Implement this interface if you want to control when certain <see cref="Revision"/> should be accepted/rejected
    /// or not by the <see cref="RevisionCollection.Accept"/>/<see cref="RevisionCollection.Reject"/> methods.
    /// </summary>
    class ASPOSE_WORDS_SHARED_CLASS IRevisionCriteria : public virtual System::Object
    {
        /// <summary>
        /// Checks whether or not specified <paramref name="revision"/> matches criteria.
        /// </summary>
        /// <param name="revision">The <see cref="Revision"/> instance to match criteria.</param>
        /// <returns><c>True</c> if the <paramref name="revision"/> matches criteria, otherwise <c>False</c>.</returns>
        /// <remarks>
        /// The method implementation should not accept/reject the revision or modify it in any way due to unexpected results.
        /// </remarks>
        virtual bool IsMatch(System::SharedPtr<Aspose::Words::Revision> revision) = 0;
    }

Added public property ChartLegend.Font

The new property ChartLegend.Font has been implemented. It allows setting the default font formatting for legend entries.

    public class ChartLegend
    {
    /// <summary>
    /// Provides access to the default font formatting of legend entries. To override the font formatting for
    /// a specific legend entry, use the<see cref="ChartLegendEntry.Font"/> property.
    /// </summary>
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Font> get_Font();
    
        ...
    }

Added public property XlsxSaveOptions.SectionMode and enum type XlsxSectionMode

A new enumeration type XlsxSectionMode and a new property XlsxSaveOptions.SectionMode of this type have been implemented.

    /// <summary>
    /// Specifies how sections are handled when saving a document in the XLSX format.
    /// </summary>
    enum class ASPOSE_WORDS_SHARED_CLASS XlsxSectionMode
    {
    /// <summary>
    /// Specifies that a separate worksheet is created for each section of a document.
    /// </summary>
    MultipleWorksheets,
    
        /// <summary>
        /// Specifies that all sections of a document are saved on one worksheet.
        /// </summary>
        SingleWorksheet
    }
    
    class ASPOSE_WORDS_SHARED_CLASS XlsxSaveOptions : public Aspose::Words::Saving::SaveOptions
    {
    ...
    
        /// <summary>
        /// Gets or sets the way how sections are handled when saving to the output XLSX document.
        /// The default value is <see cref="XlsxSectionMode.MultipleWorksheets"/>.
        /// </summary>
        ASPOSE_WORDS_SHARED_API Aspose::Words::Saving::XlsxSectionMode get_SectionMode() const;
        ASPOSE_WORDS_SHARED_API void set_SectionMode(Aspose::Words::Saving::XlsxSectionMode value);
    }

Added public WordOpenXMLMinimal for StructuredDocumentTagRangeStart node

New public property has been added to StructuredDocumentTagRangeStart node:

    /// <summary>
    /// Gets a string that represents the XML contained within the node in the <see cref="SaveFormat.FlatOpc"/> format.
    ///
    /// Unlike the <see cref="WordOpenXML"/> property, this method generates a stripped-down document that excludes any non-content-related parts.
    /// </summary>
    ASPOSE_WORDS_SHARED_API System::String get_WordOpenXMLMinimal();

The obsolete property HtmlSaveOptions.EpubNavigationMapLevel was removed

The obsolete HtmlSaveOptions.EpubNavigationMapLevel property was removed. The HtmlSaveOptions.NavigationMapLevel should be used instead.

Limitations and API Differences

Aspose.Words for C++ has some differences as compared to its equivalent .NET version of the API. This section contains information about all such functionality that is not available in the current release. The missing features will be added in future releases.

  • The current release does not support LINQ and Reporting features.
  • The current release does not support OpenGL 3D Shapes rendering.
  • The current release does not support loading PDF documents.
  • The current release has limited support for database features - C++ doesn’t have common API for DB like .NET System.Data.