Browse our Products

Aspose.Words for C++ 24.1 Release Notes

Apple Silicon Support

We are pleased to announce the release of the arm64 edition of Aspose.Words for C++ for macOS, specifically optimized for the innovative Apple Silicon platform. This architecture fuels the performance and efficiency of all modern Apple computers, showcasing exceptional capabilities.

Now the Aspose.Words for C++ macOS package includes 2 libraries:

libAspose.Words.Cpp_arm64.dylib - library for x86_64 architecture. libAspose.Words.Cpp_x86_64.dylib - library for arm64 architecture. Using CMake, library selection is fully automatic. You can see an example of this use in the demo project in the sample directory.

Major Features

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

  • Introduced the capability to modify the text of the TextBox OLE control.
  • Included new public properties to manage stroke colors.
  • Implemented the Bibliography Sources public API.

Full List of Issues Covering all Changes in this Release

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 23.2. 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 an ability to change text of TextBox OLE control

Implemented new public classes:

/// <summary>
/// The MorphDataControl structure is an aggregate of six controls: CheckBox, ComboBox, ListBox, OptionButton, TextBox, and ToggleButton.
/// </summary>
class ASPOSE_WORDS_SHARED_CLASS MorphDataControl : public Aspose::Words::Drawing::Ole::Forms2OleControl
...
/// <summary>
/// The TextBox control displays text from an organized set of data or user input.
/// </summary>
class ASPOSE_WORDS_SHARED_CLASS TextBoxControl : public Aspose::Words::Forms2::MorphDataControl

A new public property Text has been added to the class TextBoxControl:

/// <summary>
/// Gets or sets a text of the control.
/// </summary>
ASPOSE_WORDS_SHARED_API System::String get_Text();
ASPOSE_WORDS_SHARED_API void set_Text(const System::String& value);

Added new public properties for working with stroke colors

A new public properties ForeThemeColor and BackThemeColor has been added to the class Stroke:

/// <summary>
/// Gets or sets a ThemeColor object that represents the stroke foreground color.
/// </summary>
Aspose::Words::Themes::ThemeColor get_StrokeForeThemeColor() override;
void set_StrokeForeThemeColor(Aspose::Words::Themes::ThemeColor ) override;

/// <summary>
/// Gets or sets a ThemeColor object that represents the stroke background color.
/// </summary>
Aspose::Words::Themes::ThemeColor get_StrokeBackThemeColor() override;
void set_StrokeBackThemeColor(Aspose::Words::Themes::ThemeColor ) override;

A new public properties ForeTintAndShade and BackTintAndShade has been added to the class Stroke:

/// <summary>
/// Gets or sets a double value that lightens or darkens the stroke foreground color.
/// </summary>
double get_StrokeForeTintAndShade() override;
void set_StrokeForeTintAndShade(double ) override;

/// <summary>
/// Gets or sets a double value that lightens or darkens the stroke background color.
/// </summary>
double get_StrokeBackTintAndShade() override;
void set_StrokeBackTintAndShade(double ) override;

Behavior of HtmlSaveOptions.ExportListLabels save option is changed

Previously, when ExportListLabels.ByHtmlTags value was specified for HtmlSaveOptions.ExportListLabels save option, some lists could nevertheless be exported as inline text using ‘p’ tags.

Now, when ExportListLabels.ByHtmlTags value is specified for HtmlSaveOptions.ExportListLabels save option, all lists are exported as HTML native elements using ‘ul’, ‘ol’ and ’li’ tags.

Some moments worth mentioning regarding new behavior when ExportListLabels.ByHtmlTags value is specified for HtmlSaveOptions.ExportListLabels save option:

Previously lists with Heading styles were exported as inline text using ‘h1’, ‘h2’, ‘h3’, ‘h4’, ‘h5’ and ‘h6’ tags. Now they are exported as HTML native elements using ‘ul’, ‘ol’ and ’li’ tags and their styles won’t be preserved after DOCX->HTML->DOCX round-trip.

Previously lists with delete revision were exported as inline text using ‘p’ tags. Now they are exported as HTML native elements using ‘ul’, ‘ol’ and ’li’ tags and some decrease in the quality of such lists is possible.

When a document is exported to MHTML, strikethrough and underline formatting is no longer applied to list markers. If these changes in behavior are critical, you can use ExportListLabels.Auto value instead of ExportListLabels.ByHtmlTags value for HtmlSaveOptions.ExportListLabels save option, because previously their behavior was quite the same.

Implemented Bibliography Sources public API

New public Bibliography property has been added to the Document class:

class ASPOSE_WORDS_SHARED_CLASS Document
{
/// <summary>
/// Gets the <see cref="Bibliography"/> object that represents the list of sources available in the document.
/// </summary>
ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Bibliography> get_Bibliography();
}

New public Bibliography, Source, ContributorCollection, Contributor, Corporate, PersonCollection and Person classes and SourceType enumeration have been introduced:

/// <summary>
/// Represents the list of bibliography sources available in the document.
/// </summary>
class ASPOSE_WORDS_SHARED_CLASS Bibliography final : public System::Object
{
public:
    ASPOSE_WORDS_SHARED_API System::String get_BibliographyStyle() const;
    ASPOSE_WORDS_SHARED_API System::SharedPtr<System::Collections::Generic::ICollection<System::SharedPtr<Aspose::Words::Bibliography::Source>>> get_Sources();

/// <summary>
/// Represents an individual source, such as a book, journal article, or interview.
/// </summary>
class ASPOSE_WORDS_SHARED_CLASS Source final : public System::Object
{
public:
    ASPOSE_WORDS_SHARED_API System::String get_Lcid() const;
    ASPOSE_WORDS_SHARED_API const System::SharedPtr<Aspose::Words::Bibliography::ContributorCollection>& get_Contributors() const;
    ASPOSE_WORDS_SHARED_API Aspose::Words::Bibliography::SourceType get_SourceType() const;
    ASPOSE_WORDS_SHARED_API System::String get_AbbreviatedCaseNumber() const;
    ASPOSE_WORDS_SHARED_API System::String get_AlbumTitle() const;
    ASPOSE_WORDS_SHARED_API System::String get_BookTitle() const;
    ASPOSE_WORDS_SHARED_API System::String get_Broadcaster() const;
    ASPOSE_WORDS_SHARED_API System::String get_BroadcastTitle() const;
    ASPOSE_WORDS_SHARED_API System::String get_CaseNumber() const;
    ASPOSE_WORDS_SHARED_API System::String get_ChapterNumber() const;
    ASPOSE_WORDS_SHARED_API System::String get_City() const;
    ASPOSE_WORDS_SHARED_API System::String get_Comments() const;
    ASPOSE_WORDS_SHARED_API System::String get_ConferenceName() const;
    ASPOSE_WORDS_SHARED_API System::String get_CountryOrRegion() const;
    ASPOSE_WORDS_SHARED_API System::String get_Court() const;
    ASPOSE_WORDS_SHARED_API System::String get_Day() const;
    ASPOSE_WORDS_SHARED_API System::String get_DayAccessed() const;
    ASPOSE_WORDS_SHARED_API System::String get_Department() const;
    ASPOSE_WORDS_SHARED_API System::String get_Distributor() const;
    ASPOSE_WORDS_SHARED_API System::String get_Edition() const;
    ASPOSE_WORDS_SHARED_API System::String get_Guid() const;
    ASPOSE_WORDS_SHARED_API System::String get_Institution() const;
    ASPOSE_WORDS_SHARED_API System::String get_InternetSiteTitle() const;
    ASPOSE_WORDS_SHARED_API System::String get_Issue() const;
    ASPOSE_WORDS_SHARED_API System::String get_JournalName() const;
    ASPOSE_WORDS_SHARED_API System::String get_Medium() const;
    ASPOSE_WORDS_SHARED_API System::String get_Month() const;
    ASPOSE_WORDS_SHARED_API System::String get_MonthAccessed() const;
    ASPOSE_WORDS_SHARED_API System::String get_NumberVolumes() const;
    ASPOSE_WORDS_SHARED_API System::String get_Pages() const;
    ASPOSE_WORDS_SHARED_API System::String get_PatentNumber() const;
    ASPOSE_WORDS_SHARED_API System::String get_PeriodicalTitle() const;
    ASPOSE_WORDS_SHARED_API System::String get_ProductionCompany() const;
    ASPOSE_WORDS_SHARED_API System::String get_PublicationTitle() const;
    ASPOSE_WORDS_SHARED_API System::String get_Publisher() const;
    ASPOSE_WORDS_SHARED_API System::String get_RecordingNumber() const;
    ASPOSE_WORDS_SHARED_API System::String get_RefOrder() const;
    ASPOSE_WORDS_SHARED_API System::String get_Reporter() const;
    ASPOSE_WORDS_SHARED_API System::String get_ShortTitle() const;
    ASPOSE_WORDS_SHARED_API System::String get_StandardNumber() const;
    ASPOSE_WORDS_SHARED_API System::String get_StateOrProvince() const;
    ASPOSE_WORDS_SHARED_API System::String get_Station() const;
    ASPOSE_WORDS_SHARED_API System::String get_Tag() const;
    ASPOSE_WORDS_SHARED_API System::String get_Theater() const;
    ASPOSE_WORDS_SHARED_API System::String get_ThesisType() const;
    ASPOSE_WORDS_SHARED_API System::String get_Title() const;
    ASPOSE_WORDS_SHARED_API System::String get_Type() const;
    ASPOSE_WORDS_SHARED_API System::String get_Url() const;
    ASPOSE_WORDS_SHARED_API System::String get_Version() const;
    ASPOSE_WORDS_SHARED_API System::String get_Volume() const;
    ASPOSE_WORDS_SHARED_API System::String get_Year() const;
    ASPOSE_WORDS_SHARED_API System::String get_YearAccessed() const;
};
/// <summary>
/// Represents bibliography source contributors.
/// </summary>
class ASPOSE_WORDS_SHARED_CLASS ContributorCollection final : public System::Collections::Generic::IEnumerable<System::SharedPtr<Aspose::Words::Bibliography::Contributor>>
{
public:
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Artist();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Author();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_BookAuthor();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Compiler();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Composer();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Conductor();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Counsel();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Director();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Editor();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Interviewee();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Interviewer();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Inventor();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Performer();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Producer();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Translator();
    ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Bibliography::Contributor> get_Writer();
};
/// <summary>
/// Represents a bibliography source contributor. Can be either an corporate (an organization) or a list of persons.
/// </summary>
class ASPOSE_WORDS_SHARED_CLASS Contributor : public virtual System::Object
{
protected:
    Contributor();
};
/// <summary>
/// Represents a corporate (an organization) bibliography source contributor.
/// </summary>
class ASPOSE_WORDS_SHARED_CLASS Corporate final : public Aspose::Words::Bibliography::Contributor
{
public:
    ASPOSE_WORDS_SHARED_API System::String get_Name() const;
};
/// <summary>
/// Represents a list of persons who are bibliography source contributors.
/// </summary>
class ASPOSE_WORDS_SHARED_CLASS PersonCollection final : public Aspose::Words::Bibliography::Contributor, public System::Collections::Generic::IEnumerable<System::SharedPtr<Aspose::Words::Bibliography::Person>>
{
public:
    ASPOSE_WORDS_SHARED_API void SetTemplateWeakPtr(uint32_t argument) override;
};
/// <summary>
/// Represents individual (a person) bibliography source contributor.
/// </summary>
class ASPOSE_WORDS_SHARED_CLASS Person final : public System::Object
{
public:
    ASPOSE_WORDS_SHARED_API System::String get_Last() const;
    ASPOSE_WORDS_SHARED_API System::String get_First() const;
    ASPOSE_WORDS_SHARED_API System::String get_Middle() const;
};
/// <summary>
/// Represents bibliography source types.
/// </summary>
enum class ASPOSE_WORDS_SHARED_CLASS SourceType
{
ArticleInAPeriodical,
Book,
BookSection,
JournalArticle,
ConferenceProceedings,
Report,
SoundRecording,
Performance,
Art,
DocumentFromInternetSite,
InternetSite,
Film,
Interview,
Patent,
Electronic,
Case,
Misc
};

Implemented new public property MarkdownSaveOptions.ExportUnderlineFormatting

A new public property ExportUnderlineFormatting has been added to class MarkdownSaveOptions:

/// <summary>
/// Gets or sets a boolean value indicating either to export underline
/// text formatting as sequence of two plus characters "++".
/// The default value is <c>false</c>.
/// </summary>
ASPOSE_WORDS_SHARED_API bool get_ExportUnderlineFormatting() const;
ASPOSE_WORDS_SHARED_API void set_ExportUnderlineFormatting(bool value);

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 Metered license.
  • 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.
  • The current release supports Microsoft Visual C++ version 2017 or higher.
  • The current release supports GCC 6.3 or higher and Clang 3.9.1 or higher on Linux and only for the x86_x64 platform.
  • The current release supports macOS Big Sur or later (11.5+) for 64-bit Intel Mac platform.