Aspose.Words for .NET 18.11 Release Notes

Major Features

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

  • Fixed hang with autosized tables when cell has right aligned floaters.
  • Fixed wrong visual order of text in specific cases.
  • Fixed non-breaking space widths calculation.
  • Implemented support for floating table metrics when calculating grid.
  • ROP (raster operations) emulation code was improved, resulting in a significant performance boost (up to 5 times) when rendering the corresponding metafiles.
  • Improved legacy vertical writing support in EMF rendering. Fonts with the ‘@’ prefix additionally rotate the Japanese glyphs.
  • Improved calculation of the shape boundaries, more accurately mimicking the MS Word output.
  • Improved the rendering of DrawingML charts canvases overlay. Markers of the “nofill” series are rendered on the foreground.
  • Improved rendering of DrawingML chart axes for documents created using MS Word 2007.
  • Fixed a bug with incorrect resolution of the system “window” color when rendering of VML shapes.
  • Fixed an issue with underline/strikeout text effects in EMF/WMF rendering.
  • Fixed a document rendering issue when font with English name could not be found in the system with a different locale.
  • Fixed bug with rendering of DrawingML chart markers, if series data are not sorted in ascending order.
  • Fixed a bug causing shifts of rotated shapes in DrawingML chart while rendering.
  • Provided TxtSaveOptions.ExportHeadersFootersMode property.

 Full List of Issues Covering all Changes in this Release

KeySummaryCategory
WORDSNET-11330Empty pages are created after conversion from Docx to DocBug
WORDSNET-17496Incorrect color of the axis if WordStyle2010 is false after converting to PDFBug
WORDSNET-17476Orientation of characters in pictures changes during renderingBug
WORDSNET-17517Color Shading issues of Drawings in generated PDFBug
WORDSNET-17420Font Changed after a load/save Cycle of an RTF FileBug
WORDSNET-17472DOCX to PDF conversion issue with SAVEDATE renderingBug
WORDSNET-17467Combo charts with custom combination renders incorrectlyBug
WORDSNET-16661Incorrect position of Picture in PDFBug
WORDSNET-17447Problem with ListNum Cross References when converting to PDFBug
WORDSNET-17515Image misplaced in rendered PDFBug
WORDSNET-16792The user shape in the chart is shifted after converting to PDFBug
WORDSNET-17530Aspose.Words considers TextBox shapes as RectanglesBug
WORDSNET-17606An evaluation mark is added to a nested document being inserted dynamically while building a report in a venture licensed modeBug
WORDSNET-16217FindReplaceOptions.FindWholeWordsOnly does not replace standalone wordBug
WORDSNET-16710Some PostScript tests fail with GoldDifferenceException by circleBug
WORDSNET-9702Chart color is changed after using Document.AppendDocumentBug
WORDSNET-7750A Shape in Table gets cropped when rendered to fixed page formatsBug
WORDSNET-17480Layout looks broken when rendering barcodeBug
WORDSNET-16855Paragraph border is lost in output ODTBug
WORDSNET-16762Styles.AddCopy does not copy list number styleBug
WORDSNET-16682Shape is rendered improperlyBug
WORDSNET-16694Shape is rendered improperlyBug
WORDSNET-16685Shape is rendered improperlyBug
WORDSNET-17559Some elements in charts missing when converting DOCX to PDFBug
WORDSNET-17332The text is rendered towards left side of page in output HtmlFixedBug
WORDSNET-16977RTL text has wrong orderBug
WORDSNET-16146The output PDF document words are getting mixed upBug
WORDSNET-8681/arabic characters order/ RTF to XPS conversion issue with Arabic TextBug
WORDSNET-15287/arabic characters order/ Doc to Pdf conversion issue with Arabic textBug
WORDSNET-8581English words are rendering in reverse order in fixed page formatsBug
WORDSNET-7370/strong ltr text marked as rtl/ Non-RTL text gets written backward in PdfBug
WORDSNET-16497Incorrect and flipped content in the PDF renditionBug
WORDSNET-10415/arabic characters order/ Arabic characters are rendered in incorrect orderBug
WORDSNET-17457Conversion failed with error Infinite loop detectedBug
WORDSNET-17583Foreign language text inside WordArt rendered incorrectly in PDFBug
WORDSNET-17409Font of tab is changed after DOCX-HTML-DOCX round-tripBug
WORDSNET-17410Strike-through formatting is lost in output PDFBug
WORDSNET-17541The position of shape is changed after conversion from DOCX to PDFBug
WORDSNET-17507/printer metrics/ A Table Row is Pushed to next Page in PDFBug
WORDSNET-17425Incorrect non-breaking space width in Aspose.Words pdf outputBug
WORDSNET-2553Width of merged cells is incorrectBug
WORDSNET-17618Document.copyStylesFromTemplate() issuesBug
WORDSNET-17167DOCX to HTML conversion issue with alignment of math imagesEnhancement
WORDSNET-16709CustomBarcodeGenerator is not available for netstandard.Enhancement
WORDSNET-17431Customer wants to get extensions of embedded filesEnhancement
WORDSNET-17611Update to SkiaSharp 1.60.3Enhancement
WORDSNET-16687TestDefect3613 Gradient fill has artifact line.Enhancement
WORDSNET-16696TestJira13671 metafile is rendered improperlyEnhancement
WORDSNET-9751/table grid/ Docx to Pdf conversion issue with table positionEnhancement
WORDSNET-17587Document.Protect does not work with AllowOnlyFormFields protection typeEnhancement
WORDSNET-17584Rework performance tests to use the new engineEnhancement
WORDSNET-17465License.SetLicense throws System.Xml.XmlExceptionException
WORDSNET-17390License.SetLicense throws System.Xml.XmlExceptionException
WORDSNET-17461License.SetLicense throws System.ExceptionException
WORDSNET-17412License.SetLicense throws System.Xml.XmlExceptionException
WORDSNET-17581SetLicense throws ‘Invalid license signature’ exceptionException
WORDSNET-17529Aspose.Words.FileCorruptedException is thrown while loading DOCXException
WORDSNET-17375Aspose.Words generated DOCX is corruptedException
WORDSNET-17317Document.Compare throws System.InvalidOperationExceptionException
WORDSNET-17605System.InvalidOperationException is thrown while importing sectionsException
WORDSNET-17221Exception is thrown when loading HTML during DOCX-HTML-DOCX roundtripException
WORDSNET-11546Provide TxtSaveOptions.ExportHeadersFootersMode PropertyFeature
WORDSNET-17386Removing colon between empty MERGEFIELDsFeature
WORDSNET-9498Add Table property for ‘Allow spacing between cells’ optionFeature
WORDSNET-12695Implement mass copy of stylesFeature
WORDSNET-7763Style.Name do not override the existing style after calling Style.AddCopy methodFeature
WORDSNET-17436ExportDocumentStructure does not create tags for PDFRegression
WORDSNET-17585Performance test failedRegression
WORDSNET-17494Infinite loop detected when invoking UpdatePageLayout methodRegression

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 18.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 a regression and modifies existing behavior is especially important and is documented here.

Removing Colon between Empty MERGEFIELDs

WORDSNET-17386 has now been resolved.

A customer requested a feature supported by Word where you can surround a colon with two merge fields and if both fields are empty then it will also remove the colon. In fact, Aspose.Words removes a paragraph with merge fields if it becomes empty or contains only white-spaces after mail merge, which is controlled by the MailMergeCleanupOptions.RemoveEmptyParagraphs option. However, MS Word considers paragraphs with some non-white-space symbols (including colon) empty, while Aspose.Words did not prior to the fix.

We could just hard-code the new Aspose.Words behavior but did not want to introduce something that could be treated as a regression. Given that, we have added another option:

/// <summary>
/// Gets or sets a value indicating whether paragraphs with punctuation marks are considered as empty
/// and should be removed if the <see cref="MailMergeCleanupOptions.RemoveEmptyParagraphs"/> option is specified.
/// </summary>
/// <remarks>
/// The default value is <c>true</c>.
/// </remarks>
/// <remarks>
/// Here is the complete list of cleanable punctuation marks:
/// <list type="bullet">
/// <item><description>!</description></item>
/// <item><description>,</description></item>
/// <item><description>.</description></item>
/// <item><description>:</description></item>
/// <item><description>;</description></item>
/// <item><description>?</description></item>
/// <item><description>¡</description></item>
/// <item><description>¿</description></item>
/// </list>
/// </remarks>
public bool CleanupParagraphsWithPunctuationMarks
{
    get { return mCleanupParagraphsWithPunctuationMarks; }
    set { mCleanupParagraphsWithPunctuationMarks = value; }
}

The default value of the option is true which means that the behavior was changed to mimic MS Word; however, the customers who rely on the old behavior are able to revert it by setting the option to false.

The following sample demonstrates this case:

document.MailMerge.CleanupOptions = MailMergeCleanupOptions.RemoveEmptyParagraphs;
document.MailMerge.CleanupParagraphsWithPunctuationMarks = false;
document.MailMerge.Execute(new string[] {"field"}, new object[] {null});

Provide TxtSaveOptions.ExportHeadersFootersMode Property

 New public enum type was added:

// Specifies the way headers and footers are exported to plain text format.
public enum TxtExportHeadersFootersMode
{
    // No headers and footers are exported.
    None,

    // Only primary headers and footers are exported at the beginning and end of each section.
    PrimaryOnly,

    // All headers and footers are placed after all section bodies at the very end of a document.
    AllAtEnd
}

New public property was added to TxtSaveOptions class:

// Specifies the way headers and footers are exported to the plain text format.
public TxtExportHeadersFootersMode ExportHeadersFootersMode

The main advantage of new property over the old TxtSaveOptions.ExportHeadersFooters property is that it has new headers and footers export mode: ‘AllAtEnd’. In this mode Aspose.Words acts the way similar to MS Word: all headers and footers are placed after all section bodies at the very end of a document.

UC

Document doc = new Document ("inputFileName");
TxtSaveOptions options = new TxtSaveOptions();
options.SaveFormat = SaveFormat.Text;

// All headers and footers are placed at the very end of the output document.
options.ExportHeadersFootersMode = TxtExportHeadersFootersMode.AllAtEnd;
doc.Save("outputFileNameA.txt", options);

// Only primary headers and footers are exported at the beginning and end of each section.
options.ExportHeadersFootersMode = TxtExportHeadersFootersMode.PrimaryOnly;
doc.Save("outputFileNameB.txt", options);

// No headers and footers are exported.
options.ExportHeadersFootersMode = TxtExportHeadersFootersMode.None;
doc.Save("outputFileNameC.txt", options);

Obsolete Property ShowRevisionBalloons was Removed from RevisionOptions Class

Obsolete property ShowRevisionBalloons was removed from RevisionOptions class. Please use ShowInBalloons property instead.

Obsolete Property IsShowParagraphMarks was Removed from LayoutOptions Class

Obsolete property IsShowParagraphMarks was removed from LayoutOptions class. Please use ShowParagraphMarks property instead.

Obsolete Property IsShowHiddenText was Removed from LayoutOptions Class

Obsolete property IsShowHiddenText was removed from LayoutOptions class. Please use ShowHiddenText property instead.