Browse our Products
Aspose.Words for C++ 23.12 Release Notes
Major Features
There are 99 improvements and fixes in this regular monthly release. The most notable are:
- Added an ability to specify the page layout to be used when the document is opened in a PDF reader.
- Implemented the way to control how ZIP64 format extensions will be used for OOXML documents.
- Introduced support for WebP images. Please note, this feature is available for .NetStandart and .NET6+ versions only.
- Added the dollarText number format for LINQ Reporting Engine.
Full List of Issues Covering all Changes in this Release
Expand to view the full list of issues.
- Consider supporting custom number format switches, like DollarText in MS Word fields
- Content is moved to previous page upon rendering
- Implement WebP image format support upon using DocumentBuilder.InsertImage method
- Table layout is wrong after rendering
- HTML to PDF conversion issue with table’s cell spacing
- Header/Footer content lost during rendering to PDF
- The auto-fit to window property doesn’t work for a particular table
- Lines of Japanese text are wrapped incorrectly during DOCX to PDF conversion
- Chinese text is wrapped improperly in table cells
- Add CompareMoves setting to the CompareOptions
- Issue with Dynabic.Metered license code
- Aspose.Words loads HTML as TXT document
- Column width is changed upon rendering
- DOCX to PDF: Initial View set Page Layout
- Table column width are incorrect after rendering
- Cell spacing is lost after conversion from HTML to PDF
- Table it messed up after rendering
- RRT to PDF conversion issue with table rendering
- Table column widths are calculated incorrectly during rendering
- Table layout corrupted
- Word to PDF Image gets shifted, truncated in PDF
- Incorrect width of tables in Chinese document
- A Table truncates from the left in PDF
- Table’s cell width is changed after conversion from HTML to PDF
- Cell’s width is changed after conversion from MHT to DOCX/PDF
- MHTML to Word and PDF conversion issue with table layout
- Conversion issue with table layout
- Text in table is wrapped incorrectly upon rendering HTML document to PDF
- DOC to PPF conversion issue with tables
- Table width is decreased after DOC to PDF Conversion
- Chinese text in table is wrapped improperly
- Incorrect table width on conversion to PDF
- Cell’s width is changed after conversion from DOCX to PDF
- After conversion to PDF a part of a table content is wrapping
- Table width is changed after converting to fixed page formats
- Image is truncated in output PDF after inserting HTML into document
- Cell width is wrong
- Table in Chinese document is rendered improperly
- Incorrect grid calculation for an auto-fit table with Asian text inside
- DOCX to PDF: Table with Chinese text is not rendered correctly
- Incorrect table column widths for a table with Asian text
- Tables are rendered with incorrect width
- Document.PageCount returns incorrect number of pages
- Texture image size is incorrect upon extrusion
- Checkboxes are not shaded after merging documents
- Overlapped Characters after rendering
- Character overlaps each other
- Text does not fit in the page causing a blank page
- TOC page numbers are updated improperly
- LINQ Reporting Engine - Dynamic cell merging issue
- Shape is moved to previous page and is partially cut off
- System.ArgumentException at FontNameFinder.FindBestMatch
- Text in table is wrapped improperly upon rendering
- Truncated text on conversion to PDF
- Add LowCode.Merger.Merge method overload that accepts array of Document objects as an input
- Text in shape is hidden after rendering document
- Dynabic.Metered code fails after obfuscation
- Part of content is moved to previous page upon rendering
- DOCX merging issue
- Support underline formatting in Markdown
- Comparison displays wrong deletion
- PageLayout.Build() each time calls DocumentValidator.Execute() that leads to performance degradation
- Add IsPluginProduct check to licensing code
- AutoColor is incorrect in the transparent shape
- NodeImporter throws InvalidOperationException on StructuredDocumentTagRangeStart import
- Image is lost after converting document to HTML
- InvalidOperationException upon updating page layout or fields
- Unhandled exception is thrown if document contains a lot of images
- StackOverflowException is thrown upon loading RTF document
- Comment is duplicated after comparing documents
- DOCX to PDF: System.ArgumentOutOfRangeException
- FileCorruptedException is thrown upon loading MHTML document
- Image is lost after conversion to XLSX
- List items indents are lost after conversion to ODT
- Corrupted XLSX document is generated when input document contains non-rectangular cell merge area
- Superscript is rendered as subscript in equation
- NullReferenceException is thrown upon calling UpdateFields after UpdatePageLayout
- EQ Field code is rendered instead of formula
- Comment is duplicated after comparing documents
- InvalidOperationException is thrown upon comparing document
- Redundant hash character is rendered at the end of equation
- Office Math is rendered improperly
- Code block gets corrupted during loading Markdown
- PDF dictionary datetime values are written incorrectly
- FileCorruptedException is thrown upon loading DOCX document
- Aspose.Words does not detect different in hyperlink displayed text upon comparing
- TimeZone is not properly written in XMP metadata
- Incorrect processing of Type1 font Courier
- Chart is changed after updating page layout
- Incorrect rendering of the full width bracket symbols in MathML
- Converting a DOC (Word 95) document to PDF producing garbled characters
- Artifacts are shows after open/save documents
- ArgumentOutOfRangeException is thrown upon rendering document
- Bookmark moved after comparison
- HTML to DOCX: Table styles
- Decreased image DPI when saving Word document to PDF file
- Cell paddings are lost after importing HTML
- RTF to PDF: Table missing
- Font size is changed after converting PDF to DOCX
Public API and Backward Incompatible Changes
This section lists public API changes that were introduced in Aspose.Words 23.12. 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 a public property and enumeration to set the initial view page layout that will be used when opening a document in a PDF reader
New public PageLayout property has been added to the PdfSaveOptions class:
class ASPOSE_WORDS_SHARED_CLASS PdfSaveOptions : public Aspose::Words::Saving::FixedPageSaveOptions
{
...
/// <summary>
/// Specifies the page layout to be used when the document is opened in a PDF reader.
/// </summary>
/// <remarks>
/// The default value is PdfPageLayout.SinglePage/>.
/// </remarks>
ASPOSE_WORDS_SHARED_API Aspose::Words::Saving::PdfPageLayout get_PageLayout() const;
ASPOSE_WORDS_SHARED_API void set_PageLayout(Aspose::Words::Saving::PdfPageLayout value);
}
New public PdfPageLayout enumeration has been introduced:
/// <summary>
/// Specifies the page layout to be used when the document is opened in a PDF reader.
/// </summary>
enum class ASPOSE_WORDS_SHARED_CLASS PdfPageLayout
{
/// <summary>
/// Display one page at a time.
/// </summary>
SinglePage,
/// <summary>
/// Display the pages in one column.
/// </summary>
OneColumn,
/// <summary>
/// Display the pages in two columns, with odd-numbered pages on the left.
/// </summary>
TwoColumnLeft,
/// <summary>
/// Display the pages in two columns, with odd-numbered pages on the right.
/// </summary>
TwoColumnRight,
/// <summary>
/// Display the pages two at a time, with odd-numbered pages on the left.
/// </summary>
TwoPageLeft,
/// <summary>
/// Display the pages two at a time, with odd-numbered pages on the right.
/// </summary>
TwoPageRight
}
Added LowCode.Merger.Merge method overload with array of Document objects as an input
A new public method Merge(Document[], MergeFormatMode) has been added to class LowCode.Merger:
/// <summary>
/// Merges the given input documents into a single document and returns <see cref="Document"/> instance of the final document.
/// </summary>
/// <param name="inputDocuments">The input documents.</param>
/// <param name="mergeFormatMode">Specifies how to merge formatting that clashes.</param>
static ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Document> Merge(const System::ArrayPtr<System::SharedPtr<Aspose::Words::Document>>& inputDocuments, Aspose::Words::LowCode::MergeFormatMode mergeFormatMode);
Use Case
This use case explains how to use new Merge method:
Added public property OoxmlSaveOptions.Zip64Mode and enum type Zip64Mode
New public Zip64Mode property has been added to the OoxmlSaveOptions class:
class ASPOSE_WORDS_SHARED_CLASS OoxmlSaveOptions : public Aspose::Words::Saving::SaveOptions
{
...
/// <summary>
/// Specifies whether or not to use ZIP64 format extensions for the output document.
/// The default value is <see cref="Saving.Zip64Mode.Never"/>.
/// </summary>
/// <seealso cref="Zip64Mode"/>
ASPOSE_WORDS_SHARED_API Aspose::Words::Saving::Zip64Mode get_Zip64Mode() const;
ASPOSE_WORDS_SHARED_API void set_Zip64Mode(Aspose::Words::Saving::Zip64Mode value);
}
New public Zip64Mode enumeration has been introduced:
/// <summary>
/// Specifies when to use ZIP64 format extensions for OOXML files.
/// </summary>
/// <remarks>
/// OOXML file is a ZIP-archive that has a 4 GB (2^32 bytes) limit on uncompressed size of a file,
/// compressed size of a file, and total size of the archive, as well as a limit of 65,535 (2^16-1) files in archive.
/// ZIP64 format extensions increase the limits to 2^64.
/// </remarks>
/// <seealso cref="OoxmlSaveOptions.Zip64Mode"/>
enum class ASPOSE_WORDS_SHARED_CLASS Zip64Mode
{
/// <summary>
/// Do not use ZIP64 format extensions.
/// </summary>
Never = 0,
/// <summary>
/// If necessary use ZIP64 format extensions.
/// </summary>
IfNecessary = 1,
/// <summary>
/// Always use ZIP64 format extensions.
/// </summary>
Always = 2
}
Use Case
This use case explains how to set Zip64Mode:
Introduced support for WebP images.
Added support for reading WebP image format. Added the ability to both read WebP images from documents and insert them via DocumentBuilder.
Use Case
This use case explains how insert WebP image via DocumentBuilder.
Use Case
This use case explains how read WebP image.
Slight changes in IStructuredDocumentTag public interface
The new public methods RemoveSelfOnly and GetChildNodes have been added to IStructuredDocumentTag interface:
/// <summary>
/// Removes just this SDT node itself, but keeps the content of it inside the document tree.
/// </summary>
virtual void RemoveSelfOnly() = 0;
/// <summary>
/// Returns a live collection of child nodes that match the specified types.
/// </summary>
virtual System::SharedPtr<Aspose::Words::NodeCollection> GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep) = 0;
IsRanged and StructuredDocumentTagNode methods have been converted to IsMultiSection and Node properties.
/// <summary>
/// Returns true if this instance is a ranged (multi-section) structured document tag.
/// </summary>
ASPOSE_WORDS_SHARED_API bool get_IsMultiSection() override;
/// <summary>
/// Returns Node object that implements this interface.
/// </summary>
ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Node> get_Node() override;
Use Case
This use case explains how to use the IStructuredDocumentTag interface.
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.