Aspose.Words for Java 19.3 Release Notes

Major Features

  • Release JAR is upgraded to JDK 7.
  • Added feature to preserve the representation of legacy control characters while converting to OOXML formats.
  • Added new public properties to the ChartAxis class.
  • Added predefined font fallback settings for Google Noto fonts.
  • Hyphenation logic improved.
  • Fixed trailing spaces underlines in RTL paragraphs.
  • Fixed issue with automatic frame width updates when the field is changed.
  • Implemented invalid parameters filtering for shadow effect rendering.
  • Improved rendering of the dashed compound lines for polygon shapes (except Bezier curves).
  • Fixed rendering of EMF metafiles with unknow EmfPlusUnitType record.
  • Fixed a bug preventing the VML line shapes to be rendered from bottom to top.
  • Fixed a bug causing an exception while rendering the DML shape reflection effect.
  • Fixed a bug that caused the image to be incorrectly positioned due to a bounding box calculation error while rendering.
  • Fixed a bug with rendering DML Charts markers and data labels if the number of X-values is not equal to the number of Y-values.
  • Fixed a bug with rendering of DML charts series with empty XValues.

Full List of Issues Covering all Changes in this Release

WORDSJAVA-1992Is Aspose.Words FIPS 186-4 compliantFeature
WORDSNET-18146Formatting the bar chart labels on Y axisFeature
WORDSNET-18081Add feature to preserve special content of DOC when it is converted to DOCXFeature
WORDSNET-18085Comment and Editable ranges are allowed at Block node level nowFeature
WORDSNET-17778Keep indentation of Lists when saving as TextFeature
WORDSNET-17329Preparing a suitable fallback list of free fontsFeature
WORDSJAVA-1852Upgrade release JAR to JDK 7 just after Java 6 discontinuation.Enhancement
WORDSJAVA-1999Check OSGI compatibility.Enhancement
WORDSNET-17452Preserve fields during Word to Html to Word round tripEnhancement
WORDSNET-18212Unknown WIX-Installer MSI Publisher nameEnhancement
WORDSNET-17935Remove unused classes in Word formatsEnhancement
WORDSNET-18078OutOfMemoryError at Document.updatePageLayout() converting Word doc that has strange formattingPerformance
WORDSNET-18167MailMerge.ExecuteWithRegions throws System.NullReferenceExceptionException
WORDSNET-18156System.InvalidCastException is thrown while loading DOCException
WORDSNET-18129MoveToParagraph throws System.ArgumentOutOfRangeExceptionException
WORDSNET-18124FileCorruptedException is thrown while loading the RTFException
WORDSNET-18003Field.Update throws System.ArgumentNullExceptionException
WORDSNET-18004Field.Update throws System.ArgumentNullExceptionException
WORDSNET-17580System.InvalidOperationException is thrown while saving DOCX to HTMLException
WORDSNET-18128System.StackOverflowException when using the file fromWORDSNET-18078Exception
WORDSNET-18098System.ArgumentOutOfRangeException is thrown while saving DOCX to PDFRegression
WORDSJAVA-1948EMF pictures not preserved in rendered PDFBug
WORDSJAVA-1969Table formatting is changed after Cell Merging to DOCXBug method exports the OLE shape incorrectlyBug
WORDSJAVA-1991RTF to HTML - EMF image is emptyBug
WORDSNET-17658List label is changed after conversion from DOCX to PDFBug
WORDSNET-10006Tables from Headers move inside the Body during rendering to fixed page formatsBug
WORDSNET-18135The picture is not rendered due to unknown EmfPlusUnitTypeBug
WORDSNET-18106Borders are added after conversion from DOC to DOCXBug
WORDSNET-18074DOCX to PDF conversion issue with FormField resultBug
WORDSNET-18048Text before MERGEFIELD is removed after performing MailMergeBug
WORDSNET-18011DOCX to PDF conversion issue with preserved FormFieldBug
WORDSNET-18009An extra list item is created after conversion from HTML to RTFBug
WORDSNET-17995Image position is changed after conversion from DOCX to HTMLBug
WORDSNET-17972List numbers are lost in output HTML after comparing documentsBug
WORDSNET-17962DOCX to PDF conversion issue with the content positionBug
WORDSNET-17940Document.UpdateFields method changes the font formatting of NoteRef fieldBug
WORDSNET-17929DOCX to PDF conversion issue with list number fieldsBug
WORDSNET-17905PDF generation not rendering CustomXMLPart bound Plain Text STD’s contentBug
WORDSNET-17907The table is rendered improperly during HTML to TIFF conversionBug
WORDSNET-17895SVG with Font “Wingdings 3” problem inserting in DocumentBug
WORDSNET-17858InsertHtml sets incorrect paragraph indent inside the table’s cellBug
WORDSNET-17853DOCX to TXT conversion issue with number positionsBug
WORDSNET-17834The document has excessive empty paragraph when exporting to HTMLBug
WORDSNET-17610Incorrect rendering of the shape borders with “tri” compound line type and “dash” presetBug
WORDSNET-17540The position of shape is changed after conversion from DOCX to PDFBug
WORDSNET-15602StructuredDocumentTag.ContentsFont does not work forSdtType.CheckboxBug
WORDSNET-14953Footnote.ReferenceMarkreturns an incorrect value for the custom reference markBug
WORDSNET-16162The content of StructuredDocumentTag are exported incorrectlyBug
WORDSNET-18071Assertion loading documentBug
WORDSNET-18152Incorrect VML line drawingBug
WORDSNET-18162Layout text is different from Paragraph textBug
WORDSNET-18160Layout text does not match Paragraph textBug
WORDSNET-18029Paragraph’s underline formatting is lost in output PDFBug
WORDSNET-16462List numbering is not correct after using Document.CompareBug
WORDSNET-18147The corrupted document is generated after inserting a table into content controlBug
WORDSNET-18138Footer page numbers only render the first digit when converting to PDFBug
WORDSNET-18104MHT file is improperly loadedBug
WORDSNET-17879The chart markers are missing in PDF renditionBug
WORDSNET-17893DOCX to PDF - hyphenation not sameBug

Public API and Backward Incompatible Changes

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

Added feature to preserve the representation of legacy control characters while converting to OOXML formats

Related issue:WORDSNET-18081 has now been resolved.

New public property was added to the OoxmlSaveOptions class:

/// <summary>
/// Keeps original representation of legacy control characters.
/// </summary>
public bool KeepLegacyControlChars
    get { return mKeepLegacyControlChars; }
    set { mKeepLegacyControlChars = value; }

Some formats support legacy control characters. Word does not save these symbols to DOCX format (more accurately in OOXML formats). However, there is a customer request to preserve such control characters. Therefore the setting above was introduced. So far only one legacy character (ShortDateTime) is supported which declared in the “DOC” format.

Use Case:

Document doc = new Document("document.doc");
OoxmlSaveOptions so = new OoxmlSaveOptions(SaveFormat.FlatOpc);
so.KeepLegacyControlChars = true;
doc.Save("document.docx", so);

Added predefined font fallback settings for Google Noto fonts

Related issue:WORDSNET-17329 has now been resolved:

Added predefined font fallback settings for Google Noto fonts. These are free fonts licensed under SIL OFL. They can be downloaded from here.

public class FontFallbackSetting
    /// <summary>
    /// Loads predefined fallback settings which uses Google Noto fonts.
    /// </summary>
    public void LoadNotoFallbackSettings();

Note: Only Sans style Noto fonts with regular weight are used in the predefined settings.

Note: Some of the Noto fonts uses advanced typography features. Advanced typography is currently not supported by AW and these fonts may be rendered inaccurately.

Changed default value for TxtSaveOptions.AddBidiMarks property from ’true’ to ‘false’

Related issue:WORDSNET-17853 has now been resolved.

The default value for public property TxtSaveOptions.AddBidiMarks was changed from true to false:

/// <summary>
/// <para>Specifies whether to add bi-directional marks before each BiDi run when exporting in plain text format.</para>
/// <para>The default value is <b>false</b>.</para>
/// </summary>
public bool AddBidiMarks

This is now the same as the corresponding option in Word.

TxtSaveOptions.ListIndentation option is introduced that allows specifying how list levels are indented when exporting to a plain text format

Related issue:WORDSNET-17778 has now been resolved.

The following public class is introduced that allows to specify how list levels are indented when exporting to a plain text format:

/// <summary>
/// Specifies how list levels are indented when document is exporting to SaveFormat.Text format.
/// </summary>
public class TxtListIndentation

It has two public properties for specifying how many and which character to use for indentation of list levels:

/// <summary>
/// Gets or sets how many <see cref="Character"/> to use as indentation per one list level.
/// The default value is 0, that means no indentation.
/// </summary>
public int Count
/// <summary>
/// Gets or sets which character to use for indenting list levels.
/// The default value is '\0', that means there is no indentation.
/// </summary>
public char Character

At last, a new option is added to the TxtSaveOptions class:

/// <summary>
/// Gets a ListIndentation object that specifies how many and which character to use for indentation of list levels.
/// By default it is zero count of character '\0', that means no indentation.
/// </summary>
public TxtListIndentation ListIndentation

UseCase1: Use one tab character per level for list indentation:

Document doc = new Document("input_document");
TxtSaveOptions options = new TxtSaveOptions();
options.ListIndentation.Count = 1;
options.ListIndentation.Character = '\t';
doc.Save("output.txt", options);
UseCase2: Use three spaces indentation level for list indentation:
Document doc = new Document("input_document");
TxtSaveOptions options = new TxtSaveOptions();
options.ListIndentation.Count = 3;
options.ListIndentation.Character = ' ';
doc.Save("output.txt", options);
UseCase3: Do not use any list level indentation (default behavior):
Document doc1 = new Document("input_document");
Document doc2 = new Document("input_document");
TxtSaveOptions options = new TxtSaveOptions();
doc2.Save("output2.txt", options);

Provide API to change how text is vertically aligned within the Text Box

Related issue:WORDSNET-17996 has now been resolved.

Added new property for specifying vertical anchor of shape’s textbox.

/// <summary>
/// Specifies the vertical alignment of the text within a shape.
/// </summary>
/// <remarks>
/// <p>The default value is <see cref="TextBoxAnchor.Top"/>.</p>
/// </remarks>
public TextBoxAnchor VerticalAnchor

The property allows to specify text anchor within the shape(Top, Middle, Bottom).

Document doc = new Document(fileName);
Shape shape = doc.FirstSection.Body.Shapes[0];
shape.TextBox.VerticalAnchor = TextBoxAnchor.Middle;

Saving warnings will be thrown for unsupported formats (WordML) and for incompatible Word versions above 2007 (DOC, DOT).

Added public property ChartAxis.TickLabelAlignment

Related issue:WORDSNET-18146 has now been resolved.

The following new property has been added into the ChartAxis class:

/// <summary>
/// Gets or sets text alignment of axis tick labels.
/// </summary>
/// <remarks>
/// <para>This property has effect only for multi-line labels.</para>
/// <para>Default value is <see cref="ParagraphAlignment.Center"/>.</para>.
/// </remarks>
public ParagraphAlignment TickLabelAlignment

When axis tick labels are multi-line, MS Word aligns them to the center by default. The property allows for changing this behaviour.


Document doc = new Document(fileName);
Shape shape = (Shape)doc.GetChild(NodeType.Shape, 0, true);
ChartAxis axis = shape.Chart.AxisX;
axis.TickLabelAlignment = ParagraphAlignment.Right;