Aspose.Words for C++ 23.3 Release Notes

Major Features

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

  • Extended set of public properties for working with fill colors.
  • Implemented rendering of radial gradients with SkiaSharp native shader for .NET Standard.
  • Added support of InvertIfNegative property for bar chart rendering.
  • Implemented saving progress notifications for MOBI and AZW3 formats.
  • Added an ability to specify whether to adjust sentence and word spacing automatically upon document import.

Full list of changes

Expand to view the full list of issues, covering all changes in this release.
  1. Add ability to determine if font color is overridden for Inline node and for paragraph break character
  2. LINQ Reporting Engine - Column chart does not support different color for negative value
  3. Allow ImportFormatOptions.AdjustSentenceAndWordSpacing option in API
  4. Provide public API to manipulate chart gridlines
  5. Add Fill.ThemeColor option
  6. Implement plugin license support
  7. Implement rendering of radial gradients with SkiaSharp native shader for .NET Standard
  8. Enable SaveOptions.ProgressCallback when saving to MOBI
  9. Enable SaveOptions.ProgressCallback when saving to AZW3
  10. Implement rendering of a radial gradient into XPS using XPS radial gradient brush
  11. Add navigation to generated AZW3 documents
  12. Consider preserving TOC formatting upon exporting to HTML formats
  13. Preserve TOC Page numbers during Word to HTML to Word round-trip
  14. Unsupported BMP - Images are not displayed after loading HTML
  15. Text on metafile is rendered improperly
  16. XHTML to PDF conversion issue
  17. Symbols overlap after rendering
  18. Additional datapoint is rendered in the line chart
  19. Czech localized heading style names are not handled when updating STYLEREF fields
  20. Font size is incorrect after rendering text with revision
  21. Text orientation is turned to vertical after converting to HTML
  22. Metafile is rendered improperly in .NET Standard
  23. PDF file can’t be opened
  24. Image is rendered improperly in .NET Standard version of Aspose.Words
  25. Spacing between symbols is incorrect after rendering
  26. InsertField method throws NullReferenceException when using IF field
  27. FileCorruptedException is thrown upon loading encrypted DOCX document
  28. A redundant empty page is produced when render Hebrew document
  29. Delete paragraph fails when paragraph is inside SDT
  30. Significant performance decrease upon conversion OfficeMath to string
  31. HTML to MD: Backslash is appended in name of image in resultant file
  32. Table with merged cells is recognized improperly
  33. GroupShape does not render correctly in fixed file format
  34. FileCorruptedException is thrown upon loading RTF document
  35. Effects for “thin” elements are not rendered
  36. Comparison displays wrong document revision
  37. Footer shows a delete revision after comparing documents
  38. FileCorruptedException is thrown upon loading DOC document
  39. Document comparison removes highlighted text
  40. NullReferenceException is thrown upon comparing documents
  41. ArgumentNullException is thrown upon calling UpdatePageLayout
  42. FileCorruptedException is thrown upon loading DOCX document
  43. Watermark image is missed from document after save to Iso29500_2008_Strict DOCX
  44. Aspose.Words does not include an empty heading paragraph with numbering into the TOC
  45. Effects applied to grid lines are not rendered
  46. Content is pushed down and overlaps footnotes
  47. Colors are inverted after importing PDF document
  48. Doted background is rendered in metafile
  49. FileCorruptedException on loading MHTML
  50. NullReferenceException on converting DOCX
  51. Trendline label is not rendered
  52. Text behind images in PDF conversion
  53. List item tabs are rendered bigger than required
  54. List tab stop is incorrect after rendering
  55. Part of TC field becomes visible after conversion to RTF
  56. Allow creating DML Shape from public API
  57. Shape position and size is changed after open/save document
  58. HTML to MD: Table of content does not lead to content
  59. PdfCompositeEncodingConvertor throws ArgumentOutOfRangeException
  60. Arabic text in SVG is rendered inaccurately in case of font fallback
  61. Problem loading document
  62. HTM loading issue
  63. ReportingEngine, when reading Async Method throws exception in the document
  64. Bookmark from headings are not created saving to PDF
  65. XML to PDF incorrect formatting
  66. Empty output document after converting from CHM to DOCX
  67. Exception is thrown while saving DOCX to image format under Linux
  68. OutOfMemoryException throws when document is saved
  69. Table Front style issue while converting Word to HTML to word document
  70. HTML to PDF conversion generates incorrect output
  71. InvalidOperationException on UpdatePageLayout after inserting HTML via DocumentBuilder
  72. Tables width increase beyond the Page width during Word to HTML to Word round-trip
  73. The use of ExportListLabels.AsInlineText value for HtmlOptions.ExportListLabels option can raise System.InvalidOperationException
  74. Problems to covert html containing element located in absolute position into PDF
  75. The delta character in a math formula is replaced with the V character
  76. NullReferenceException is thrown upon rendering document
  77. Image elements in absolute positions in HTML are not displayed in Word
  78. Aspose.Word .NET Core Performance Problem

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 23.3. 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 new public properties for working with fill colors

A new public properties ForeThemeColor and BackThemeColor has been added to class Fill.

/// Gets a ThemeColor object that represents the foreground color for the fill.
ASPOSE_WORDS_SHARED_API Aspose::Words::Themes::ThemeColor get_ForeThemeColor();

/// Sets a ThemeColor object that represents the foreground color for the fill.
ASPOSE_WORDS_SHARED_API void set_ForeThemeColor(Aspose::Words::Themes::ThemeColor value);

/// Gets a ThemeColor object that represents the background color for the fill.
ASPOSE_WORDS_SHARED_API Aspose::Words::Themes::ThemeColor get_BackThemeColor();

/// Sets a ThemeColor object that represents the background color for the fill.
ASPOSE_WORDS_SHARED_API void set_BackThemeColor(Aspose::Words::Themes::ThemeColor value);

A new public properties ForeTintAndShade and BackTintAndShade has been added to class Fill.
<div class="highlight"><pre class="chroma"><code class="language-cpp" data-lang="cpp"><span class="c1">/// Gets or sets a double value that lightens or darkens the foreground color.
</span><span class="c1">///
</span><span class="c1">/// The allowed values are within the range from -1 (the darkest) to 1 (the lightest) for this property.
</span><span class="c1">/// Zero (0) is neutral. Attempting to set this property to a value less than -1 or more than 1
</span><span class="c1">/// results in &lt;see cref=&#34;System::ArgumentOutOfRangeException&#34;&gt;ArgumentOutOfRangeException&lt;/see&gt;.
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">double</span> <span class="nf">get_ForeTintAndShade</span><span class="p">();</span>

<span class="c1">/// Setter for Aspose::Words::Drawing::Fill::get_ForeTintAndShade
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">void</span> <span class="nf">set_ForeTintAndShade</span><span class="p">(</span><span class="kt">double</span> <span class="n">value</span><span class="p">);</span>

<span class="c1">/// Gets or sets a double value that lightens or darkens the background color.
</span><span class="c1">///
</span><span class="c1">/// The allowed values are within the range from -1 (the darkest) to 1 (the lightest) for this property.
</span><span class="c1">/// Zero (0) is neutral. Attempting to set this property to a value less than -1 or more than 1
</span><span class="c1">/// results in &lt;see cref=&#34;System::ArgumentOutOfRangeException&#34;&gt;ArgumentOutOfRangeException&lt;/see&gt;.
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">double</span> <span class="nf">get_BackTintAndShade</span><span class="p">();</span>

<span class="c1">/// Setter for Aspose::Words::Drawing::Fill::get_BackTintAndShade
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">void</span> <span class="nf">set_BackTintAndShade</span><span class="p">(</span><span class="kt">double</span> <span class="n">value</span><span class="p">);</span>
</code></pre></div>

#### Use Case:
Explains how to work with theme colors and tint and shade.
<div class="highlight"><pre class="chroma"><code class="language-cpp" data-lang="cpp"><span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Document</span><span class="o">&gt;</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">System</span><span class="o">::</span><span class="n">MakeObject</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Document</span><span class="o">&gt;</span><span class="p">(</span><span class="sa">u</span><span class="s">&#34;in.docx&#34;</span><span class="p">);</span>

<span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Drawing</span><span class="o">::</span><span class="n">Fill</span><span class="o">&gt;</span> <span class="n">shapeFill</span> <span class="o">=</span> <span class="p">(</span><span class="n">System</span><span class="o">::</span><span class="n">AsCast</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Drawing</span><span class="o">::</span><span class="n">Shape</span><span class="o">&gt;</span><span class="p">(</span><span class="n">doc</span><span class="o">-&gt;</span><span class="n">GetChild</span><span class="p">(</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">NodeType</span><span class="o">::</span><span class="n">Shape</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">true</span><span class="p">)))</span><span class="o">-&gt;</span><span class="n">get_Fill</span><span class="p">();</span>
<span class="c1">// Gets and sets the value of theme colors.
</span><span class="c1"></span><span class="k">if</span> <span class="p">(</span><span class="n">shapeFill</span><span class="o">-&gt;</span><span class="n">get_ForeThemeColor</span><span class="p">()</span> <span class="o">==</span> <span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Themes</span><span class="o">::</span><span class="n">ThemeColor</span><span class="o">::</span><span class="n">Accent1</span><span class="p">)</span>
<span class="p">{</span>
    <span class="n">shapeFill</span><span class="o">-&gt;</span><span class="n">set_ForeThemeColor</span><span class="p">(</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Themes</span><span class="o">::</span><span class="n">ThemeColor</span><span class="o">::</span><span class="n">Dark1</span><span class="p">);</span>
<span class="p">}</span>

<span class="k">if</span> <span class="p">(</span><span class="n">shapeFill</span><span class="o">-&gt;</span><span class="n">get_BackThemeColor</span><span class="p">()</span> <span class="o">==</span> <span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Themes</span><span class="o">::</span><span class="n">ThemeColor</span><span class="o">::</span><span class="n">Accent2</span><span class="p">)</span>
<span class="p">{</span>
    <span class="n">shapeFill</span><span class="o">-&gt;</span><span class="n">set_BackThemeColor</span><span class="p">(</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Themes</span><span class="o">::</span><span class="n">ThemeColor</span><span class="o">::</span><span class="n">Dark2</span><span class="p">);</span>
<span class="p">}</span>

<span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Drawing</span><span class="o">::</span><span class="n">Fill</span><span class="o">&gt;</span> <span class="n">textFill1</span> <span class="o">=</span> <span class="n">doc</span><span class="o">-&gt;</span><span class="n">get_FirstSection</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_Body</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_FirstParagraph</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_Runs</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">idx_get</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">get_Font</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_Fill</span><span class="p">();</span>
<span class="c1">// Gets and sets the tint value.
</span><span class="c1"></span><span class="k">if</span> <span class="p">(</span><span class="n">textFill1</span><span class="o">-&gt;</span><span class="n">get_ForeTintAndShade</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
    <span class="n">textFill1</span><span class="o">-&gt;</span><span class="n">set_ForeTintAndShade</span><span class="p">(</span><span class="mf">0.5</span><span class="p">);</span>
<span class="p">}</span>

<span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Drawing</span><span class="o">::</span><span class="n">Fill</span><span class="o">&gt;</span> <span class="n">textFill2</span> <span class="o">=</span> <span class="n">doc</span><span class="o">-&gt;</span><span class="n">get_FirstSection</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_Body</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_FirstParagraph</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_Runs</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">idx_get</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">get_Font</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_Fill</span><span class="p">();</span>
<span class="c1">// Gets and sets the shade value.
</span><span class="c1"></span><span class="k">if</span> <span class="p">(</span><span class="n">textFill2</span><span class="o">-&gt;</span><span class="n">get_ForeTintAndShade</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
    <span class="n">textFill2</span><span class="o">-&gt;</span><span class="n">set_ForeTintAndShade</span><span class="p">(</span><span class="o">-</span><span class="mf">0.2</span><span class="p">);</span>
<span class="p">}</span>

<span class="n">doc</span><span class="o">-&gt;</span><span class="n">Save</span><span class="p">(</span><span class="sa">u</span><span class="s">&#34;out.docx&#34;</span><span class="p">);</span>
</code></pre></div>

### Added public properties HasMajorGridlines and HasMinorGridlines to ChartAxis class

The following public properties have been added to the Aspose.Words.Drawing.Charts.ChartAxis class:
<div class="highlight"><pre class="chroma"><code class="language-cpp" data-lang="cpp"><span class="c1">/// Gets a flag indicating whether the axis has major gridlines.
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">bool</span> <span class="nf">get_HasMajorGridlines</span><span class="p">();</span>

<span class="c1">/// Sets a flag indicating whether the axis has major gridlines.
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">void</span> <span class="nf">set_HasMajorGridlines</span><span class="p">(</span><span class="kt">bool</span> <span class="n">value</span><span class="p">);</span>

<span class="c1">/// Gets a flag indicating whether the axis has minor gridlines.
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">bool</span> <span class="nf">get_HasMinorGridlines</span><span class="p">();</span>

<span class="c1">/// Sets a flag indicating whether the axis has minor gridlines.
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">void</span> <span class="nf">set_HasMinorGridlines</span><span class="p">(</span><span class="kt">bool</span> <span class="n">value</span><span class="p">);</span>
</code></pre></div>

#### Use Case:
Explains how to show chart gridlines.
<div class="highlight"><pre class="chroma"><code class="language-cpp" data-lang="cpp"><span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Document</span><span class="o">&gt;</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">System</span><span class="o">::</span><span class="n">MakeObject</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Document</span><span class="o">&gt;</span><span class="p">();</span>
<span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">DocumentBuilder</span><span class="o">&gt;</span> <span class="n">builder</span> <span class="o">=</span> <span class="n">System</span><span class="o">::</span><span class="n">MakeObject</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">DocumentBuilder</span><span class="o">&gt;</span><span class="p">(</span><span class="n">doc</span><span class="p">);</span>

<span class="c1">// Insert a chart.
</span><span class="c1"></span><span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Drawing</span><span class="o">::</span><span class="n">Shape</span><span class="o">&gt;</span> <span class="n">shape</span> <span class="o">=</span> <span class="n">builder</span><span class="o">-&gt;</span><span class="n">InsertChart</span><span class="p">(</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Drawing</span><span class="o">::</span><span class="n">Charts</span><span class="o">::</span><span class="n">ChartType</span><span class="o">::</span><span class="n">Column</span><span class="p">,</span> <span class="mi">432</span><span class="p">,</span> <span class="mi">252</span><span class="p">);</span>
    
<span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Drawing</span><span class="o">::</span><span class="n">Charts</span><span class="o">::</span><span class="n">ChartAxis</span><span class="o">&gt;</span> <span class="n">xAxis</span> <span class="o">=</span> <span class="n">shape</span><span class="o">-&gt;</span><span class="n">get_Chart</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_AxisX</span><span class="p">();</span>
<span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Drawing</span><span class="o">::</span><span class="n">Charts</span><span class="o">::</span><span class="n">ChartAxis</span><span class="o">&gt;</span> <span class="n">yAxis</span> <span class="o">=</span> <span class="n">shape</span><span class="o">-&gt;</span><span class="n">get_Chart</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_AxisY</span><span class="p">();</span>
    
<span class="c1">// Show gridlines.
</span><span class="c1"></span><span class="n">xAxis</span><span class="o">-&gt;</span><span class="n">set_HasMajorGridlines</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<span class="n">xAxis</span><span class="o">-&gt;</span><span class="n">set_HasMinorGridlines</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<span class="n">yAxis</span><span class="o">-&gt;</span><span class="n">set_HasMajorGridlines</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<span class="n">yAxis</span><span class="o">-&gt;</span><span class="n">set_HasMinorGridlines</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
    
<span class="n">doc</span><span class="o">-&gt;</span><span class="n">Save</span><span class="p">(</span><span class="sa">u</span><span class="s">&#34;Gridlines.docx&#34;</span><span class="p">);</span>
</code></pre></div>

### Added public property ImportFormatOptions.AdjustSentenceAndWordSpacing

The following public property was added to Aspose.Words.ImportFormatOptions class:
<div class="highlight"><pre class="chroma"><code class="language-cpp" data-lang="cpp"><span class="c1">/// Gets a boolean value that specifies whether to adjust sentence and word spacing automatically.
</span><span class="c1">/// The default value is &lt;c&gt;%false&lt;/c&gt;.
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">bool</span> <span class="nf">get_AdjustSentenceAndWordSpacing</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>

<span class="c1">/// Sets a boolean value that specifies whether to adjust sentence and word spacing automatically.
</span><span class="c1">/// The default value is &lt;c&gt;%false&lt;/c&gt;.
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">void</span> <span class="nf">set_AdjustSentenceAndWordSpacing</span><span class="p">(</span><span class="kt">bool</span> <span class="n">value</span><span class="p">);</span>
</code></pre></div>

#### Use Case:
Explains how to use AdjustSentenceAndWordSpacing option.
<div class="highlight"><pre class="chroma"><code class="language-cpp" data-lang="cpp"><span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Document</span><span class="o">&gt;</span> <span class="n">srcDoc</span> <span class="o">=</span> <span class="n">System</span><span class="o">::</span><span class="n">MakeObject</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Document</span><span class="o">&gt;</span><span class="p">();</span>
<span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Document</span><span class="o">&gt;</span> <span class="n">dstDoc</span> <span class="o">=</span> <span class="n">System</span><span class="o">::</span><span class="n">MakeObject</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Document</span><span class="o">&gt;</span><span class="p">();</span>

<span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">DocumentBuilder</span><span class="o">&gt;</span> <span class="n">builder</span> <span class="o">=</span> <span class="n">System</span><span class="o">::</span><span class="n">MakeObject</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">DocumentBuilder</span><span class="o">&gt;</span><span class="p">(</span><span class="n">srcDoc</span><span class="p">);</span>
<span class="n">builder</span><span class="o">-&gt;</span><span class="n">Write</span><span class="p">(</span><span class="sa">u</span><span class="s">&#34;Dolor sit amet.&#34;</span><span class="p">);</span>
    
<span class="n">builder</span> <span class="o">=</span> <span class="n">System</span><span class="o">::</span><span class="n">MakeObject</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">DocumentBuilder</span><span class="o">&gt;</span><span class="p">(</span><span class="n">dstDoc</span><span class="p">);</span>
<span class="n">builder</span><span class="o">-&gt;</span><span class="n">Write</span><span class="p">(</span><span class="sa">u</span><span class="s">&#34;Lorem ipsum.&#34;</span><span class="p">);</span>
    
<span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">ImportFormatOptions</span><span class="o">&gt;</span> <span class="n">options</span> <span class="o">=</span> <span class="n">System</span><span class="o">::</span><span class="n">MakeObject</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">ImportFormatOptions</span><span class="o">&gt;</span><span class="p">();</span>
<span class="n">options</span><span class="o">-&gt;</span><span class="n">set_AdjustSentenceAndWordSpacing</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<span class="n">builder</span><span class="o">-&gt;</span><span class="n">InsertDocument</span><span class="p">(</span><span class="n">srcDoc</span><span class="p">,</span> <span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">ImportFormatMode</span><span class="o">::</span><span class="n">UseDestinationStyles</span><span class="p">,</span> <span class="n">options</span><span class="p">);</span>
    
<span class="n">System</span><span class="o">::</span><span class="n">Console</span><span class="o">::</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">dstDoc</span><span class="o">-&gt;</span><span class="n">get_FirstSection</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_Body</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">get_FirstParagraph</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">GetText</span><span class="p">());</span>
    
<span class="cm">/* This code produces the following output (please note the additional &#39; &#39; space character just before pasted content):
</span><span class="cm">Lorem ipsum. Dolor sit amet.
</span><span class="cm">*/</span>
</code></pre></div>

### Added public property TextBox.NoTextRotation

The following public property was added to Aspose.Words.Drawing.TextBox class:
<div class="highlight"><pre class="chroma"><code class="language-cpp" data-lang="cpp"><span class="c1">/// Gets a boolean value indicating either text of the TextBox should not rotate when the shape is rotated.
</span><span class="c1">///
</span><span class="c1">/// The default value is &lt;c&gt;%false&lt;/c&gt;
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">bool</span> <span class="nf">get_NoTextRotation</span><span class="p">();</span>

<span class="c1">/// Sets a boolean value indicating either text of the TextBox should not rotate when the shape is rotated.
</span><span class="c1">/// 
</span><span class="c1">/// The default value is &lt;c&gt;%false&lt;/c&gt;
</span><span class="c1"></span><span class="n">ASPOSE_WORDS_SHARED_API</span> <span class="kt">void</span> <span class="nf">set_NoTextRotation</span><span class="p">(</span><span class="kt">bool</span> <span class="n">value</span><span class="p">);</span>
</code></pre></div>

#### Use Case:
Explains how to use NoTextRotation option.
<div class="highlight"><pre class="chroma"><code class="language-cpp" data-lang="cpp"><span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">DocumentBuilder</span><span class="o">&gt;</span> <span class="n">builder</span> <span class="o">=</span> <span class="n">System</span><span class="o">::</span><span class="n">MakeObject</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">DocumentBuilder</span><span class="o">&gt;</span><span class="p">();</span>
<span class="n">System</span><span class="o">::</span><span class="n">SharedPtr</span><span class="o">&lt;</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Drawing</span><span class="o">::</span><span class="n">Shape</span><span class="o">&gt;</span> <span class="n">shape</span> <span class="o">=</span> <span class="n">builder</span><span class="o">-&gt;</span><span class="n">InsertShape</span><span class="p">(</span><span class="n">Aspose</span><span class="o">::</span><span class="n">Words</span><span class="o">::</span><span class="n">Drawing</span><span class="o">::</span><span class="n">ShapeType</span><span class="o">::</span><span class="n">Ellipse</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">20</span><span class="p">);</span>
<span class="n">shape</span><span class="o">-&gt;</span><span class="n">get_TextBox</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">set_NoTextRotation</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
</code></pre></div>

### Enabled saving progress notifications for MOBI and AZW3 formats

The SaveOptions.ProgressCallback is now also invoked when saving to Mobi or AZW3.

## 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.