Aspose.Words for Java 19.8 Release Notes

Major Features

  • Option to call HarfBuzz library (on Windows only yet) for better kerning.
  • Separate Aspose.Words jdk16.jar is publically available on Aspose Downloads site.
  • API Examples are fully updated and improved.
  • Aspose.Words for Java is tested on Java 12.
  • Simplified TIFFImageWriter is used when external TIFF image libs (JAI, etc.) are not available.
  • Implemented an option that allows specifying whether to work with the original or revised version of a document.
  • Implemented API to define default options for data labels of chart series.
  • Fixed rendering of diagonal borders is vertically merged cells.
  • Fixed issue when “keep with next” is applied to the last paragraph in a table cell.
  • Improved computation of paragraph metrics for Asian text in a table.
  • Improved surrogate pairs handling.
  • Fixed problem with negative contrast images rendering. Now, if the document contains VML images with negative contrast, they are rendered in the same way as in MS Word, without causing exceptions.
  • Fixed a bug with the incorrect association of data labels and series values when rendering DML charts.
  • Fixed a bug with calculation of the X-values of the scatter chart while rendering.
  • Fixed a bug with inheriting paragraph properties of data labels (Font size) when rendering DML charts.
  • Fixed a bug with clipping of the user shape text when rendering DML charts.

Full List of Issues Covering all Changes in this Release

KeySummaryCategory
WORDSJAVA-1989Use internal TIFFImageWriter when external tiff image libs (JAI) are not available.New Feature
WORDSJAVA-2111Clear FipsUnapprovedOperationException for non-FIPS operations in FIPS mode.New Feature
WORDSJAVA-2122Option to call HarfBuzz library (on Windows only yet) for better kerning.New Feature
WORDSJAVA-2126Update and improve API Examples.New Feature
WORDSJAVA-2137Separate Aspose.Words jdk16.jar on public Aspose Downloads site.New Feature
WORDSJAVA-2149Check Aspose.Words for Java on Java 12.New Feature
WORDSJAVA-2154New clean 3rd party licenses PDF file directly from internal FOSS database.New Feature
WORDSNET-18808Analyze what it takes to convert a document with images in docker (Linux)New Feature
WORDSNET-2261Kerning option is ignored upon rendering/converting to PDFNew Feature
WORDSJAVA-2093An exception raises while loading Aspose.Words on Java 1.6 runtime.Bug
WORDSJAVA-2138java.lang.OutOfMemoryError is thrown while saving RTF to PDFBug
WORDSJAVA-2139System.NullReferenceException is thrown when DOCX is converted to TIFFBug
WORDSJAVA-2140SimplifiedJaiTiffWriter produces incorrect resultsBug
WORDSJAVA-2141Conversion from DOCX to PDF hangs (Metafile with alpha-channel.)Bug
WORDSJAVA-2144Can’t load RTF with the ugly table inside.Bug
WORDSNET-18864Iskoola Pota and Latha font rendering issuesBug
WORDSNET-18561Chart’s axis is missing in output PDFBug
WORDSNET-18691There is a formatting issue in word document whereby text becomes bold after conversion of policy write-up to PDFBug
WORDSNET-18875Document format changed when inserting headerBug
WORDSNET-18510DOCX to HTML conversion issue with formula renderingBug
WORDSNET-18511DOCX to HTML conversion issue with page break positionBug
WORDSNET-18513Infinity loop exception when converting DOCX to PDFBug
WORDSNET-18895Paragraph’s formatting is incorrect after export to HTMLBug
WORDSNET-18894Paragraph’s formatting is incorrect after export to HTMLBug
WORDSNET-18896Paragraph’s spaces aren’t preserved after DOCX-HTML-DOCX roundtrip, even if HtmlSaveOptions.ExportRoundtripInformation is set to true.Bug
WORDSNET-18751Check suspicious code found by PVS studioBug
WORDSNET-18887Aspose.Words.FileCorruptedException is thrown while loading DOCXBug
WORDSNET-9526Body content overlaps the content of Primary Footer in PDFBug
WORDSNET-9391Text position is changed after conversion from DOCX to fixed file formatBug
WORDSNET-18903ListLabel.LabelString returns incorrect value when the paragraph has revisionBug
WORDSNET-11431Text in the textbox is wrapped improperlyBug
WORDSNET-17040Aspose.Words 18.6: Wrong layout when converting particular DOCX to PDFBug
WORDSNET-17871Hyperlink tooltip is missing during DOCX to HTML conversionBug
WORDSNET-15963Shape’s text is truncated after conversion from DOC to PDFBug
WORDSNET-18134Document.UpdateFields changes table formattingBug
WORDSNET-18904RTF to PDF improperly renderedBug
WORDSNET-18737The diagonal line in the table’s cell is lost in output PDFBug
WORDSNET-18893Shape position is changed after conversion from DOCX to PDFBug
WORDSNET-14280DOC to PDF conversion issue with text renderingBug
WORDSNET-13495AW improperly works with surrogate pairsBug
WORDSNET-15183Convert OO ODT document to PDF - checkbox frame missingBug
WORDSNET-15770The last two lines moved to another page.Bug
WORDSNET-18715ToC is indented differently by Aspose.Words vs MS WordBug
WORDSNET-18617The table is rendered outside the page at the right side in output HTMLFixed/PNGBug
WORDSNET-18622HTML to DOCX - table columns get squeezedBug
WORDSNET-17945DOCX to HTML conversion issue with tableBug
WORDSNET-18469The issue with list numberingBug
WORDSNET-18925An unexpected increase of paragraph left indent on assigning ListFormat.ListIdBug
WORDSNET-18797Hebrew content disappears when converting an RTFBug
WORDSNET-18807Position of data labels is different after conversion to PDFBug
WORDSNET-18946System.NotImplementedException occurs on attempt to get VbaProjectBug
WORDSNET-17520Unordered lists retain bullets if bootstrap CSS is linkedBug
WORDSNET-18820System.InvalidCastException occurs upon loading an RTFBug
WORDSNET-18600Chart data labels do not show Percentage and value after the updateBug
WORDSNET-18922ListFormat.ListLevel returns null for a paragraph with revisionBug
WORDSNET-18958Wrong numbering after documents importBug
WORDSNET-18959The issue with StructuredDocumentTag comparison.Bug
WORDSNET-17835Two identical paragraphs are exported differently when converting to HTMLBug
WORDSNET-18761List numbering is broken, when the number of list levels is greater than 9, in HTML importBug
WORDSNET-18762When list numbering is set with: before pseudo-element, list indent is incorrect in HTML importBug
WORDSNET-16483DOCX to PDF conversion issue with text positionBug
WORDSNET-18651Aspose.Words.Document takes much time to import HTMLBug
WORDSNET-18763Hebrew number/text become reverse after converting HTML to DOCX/PDFBug
WORDSNET-15838Text flow issue in resultant PDFBug
WORDSNET-15209Image shifts to next page during DOCX to PDF conversionBug
WORDSNET-9495Contents move to next line after conversion from DOC to PDFBug
WORDSNET-14586Japanese text does not render correctly in output PDFBug
WORDSNET-18662DOCX to PDF: Diagram conversion issueBug
WORDSNET-18558The font size of the chart’s data labels is increased when converted DOCX to PDFBug
WORDSNET-18865FileFormatUtil.DetectFileFormat(Stream) recognizes some PNG images as MarkdownBug
WORDSNET-18682Loading HTML file takes too longBug
WORDSNET-18766System.ArgumentOutOfRangeException occurs upon saving to PDFBug
WORDSNET-18767UserShape appears after conversion to PDFBug
WORDSNET-18750Check suspicious code found by PVS studioBug
WORDSNET-14584Incorrect table width for an auto-fit table with Japanese textBug
WORDSNET-18869Images are not displaying in PDF - .NET Core App - Visual Studio Code - Ubuntu 16.04Bug
WORDSNET-12136DOCX to PDF conversion issue with letter spacingBug
WORDSNET-13665Kerning for fonts is not supported during renderingBug
WORDSNET-15324Chinese text is not rendered correctly in the table’s cellBug
WORDSNET-16023DOCX to PDF conversion issue with table positionBug
WORDSNET-13515Process hangs during converting DOCX to PDFBug
WORDSNET-13877Converting DOC to PDF alters tableBug
WORDSNET-13533Incorrect spacing on a paragraph imported from an HTML altchunkBug
WORDSNET-13466The font size of the text inside SmartArt is increased in output DOC/PDFBug

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 19.8. 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.

Implemented an option that allows to specify whether to work with the original or revised version of a document

Related issues: WORDSNET-18903, WORDSNET-18922.

The new public enumeration was added:

/// <summary>
/// Allows to specify whether to work with the original or revised version of a document.
/// </summary>
public enum RevisionsView

Added new public option into Document class:

/// <summary>
/// Gets or sets a value indicating whether to work with the original or revised version of a document.
/// </summary>
/// <remarks>
/// The default value is <b><see cref="Aspose.Words.RevisionsView.Original"/></b>.
/// </remarks>
public RevisionsView RevisionsView

Use Case. Explains how to access the revised version of a document:

Document doc = new Document(@"test.docx");
doc.UpdateListLabels();

// Switch to the revised version of the document.
doc.RevisionsView = RevisionsView.Final;
foreach (Revision revision in doc.Revisions)
{
    if (revision.ParentNode.NodeType == NodeType.Paragraph)
    {
        Paragraph paragraph = (Paragraph)revision.ParentNode;
        if (paragraph.IsListItem)
        {
            // Print revised version of LabelString and ListLevel.
            Console.WriteLine(paragraph.ListLabel.LabelString);
            Console.WriteLine(paragraph.ListFormat.ListLevel);
        }
    }
}

WORDSNET-18600 - Implemented API to define default options for data labels of chart series

The following new public properties have been added into the ChartDataLabelCollection class:

/// <summary>
/// Allows to specify whether category name is to be displayed for the data labels of the entire series.
/// Default value is <b>false</b>.
/// </summary>
/// <remarks>
/// Value defined for this property can be overridden for an individual data label with using the
/// <see cref="ChartDataLabel.ShowCategoryName"/> property.
/// </remarks>
public bool ShowCategoryName { get; set; }
/// <summary>
/// Allows to specify whether bubble size is to be displayed for the data labels of the entire series.
/// Applies only to Bubble charts. 
/// Default value is <b>false</b>.
/// </summary>
/// <remarks>
/// Value defined for this property can be overridden for an individual data label with using the
/// <see cref="ChartDataLabel.ShowBubbleSize"/> property.
/// </remarks>
public bool ShowBubbleSize { get; set; }
/// <summary>
/// Allows to specify whether legend key is to be displayed for the data labels of the entire series.
/// Default value is <b>false</b>.
/// </summary>
/// <remarks>
/// Value defined for this property can be overridden for an individual data label with using the
/// <see cref="ChartDataLabel.ShowLegendKey"/> property.
/// </remarks>
public bool ShowLegendKey { get; set; }
/// <summary>
/// Allows to specify whether percentage value is to be displayed for the data labels of the entire series.
/// Default value is <b>false</b>.
/// </summary>
/// <remarks>
/// Value defined for this property can be overridden for an individual data label with using the
/// <see cref="ChartDataLabel.ShowPercentage"/> property.
/// </remarks>
public bool ShowPercentage { get; set; }
/// <summary>
/// Returns or sets a Boolean to indicate the series name display behavior for the data labels of the entire series.
/// <b>True</b> to show the series name. <b>False</b> to hide. By default <b>false</b>.
/// </summary>
/// <remarks>
/// Value defined for this property can be overridden for an individual data label with using the
/// <see cref="ChartDataLabel.ShowSeriesName"/> property.
/// </remarks>
public bool ShowSeriesName { get; set; }
/// <summary>
/// Allows to specify whether values are to be displayed in the data labels of the entire series.
/// Default value is <b>false</b>.
/// </summary>
/// <remarks>
/// Value defined for this property can be overridden for an individual data label with using the
/// <see cref="ChartDataLabel.ShowValue"/> property.
/// </remarks>
public bool ShowValue { get; set; }
/// <summary>
/// Allows to specify whether data label leader lines need be shown for the data labels of the entire series.
/// Default value is <b>false</b>.
/// </summary>
/// <remarks>
/// <para>Applies to Pie charts only. 
/// Leader lines create a visual connection between a data label and its corresponding data point.</para>
/// <para>Value defined for this property can be overridden for an individual data label with using the
/// <see cref="ChartDataLabel.ShowLeaderLines"/> property.</para>
/// </remarks>
public bool ShowLeaderLines { get; set; }
/// <summary>
/// Allows to specify whether values from data labels range to be displayed in the data labels of the entire series.
/// Default value is <b>false</b>.
/// </summary>
/// <remarks>
/// Value defined for this property can be overridden for an individual data label with using the
/// <see cref="ChartDataLabel.ShowDataLabelsRange"/> property.
/// </remarks>
public bool ShowDataLabelsRange { get; set; }
/// <summary>
/// Gets or sets string separator used for the data labels of the entire series. 
/// The default is a comma, except for pie charts showing only category name and percentage, when a line break 
/// shall be used instead. 
/// </summary>
/// <remarks>
/// Value defined for this property can be overridden for an individual data label with using the
/// <see cref="ChartDataLabel.Separator"/> property.
/// </remarks>
public string Separator { get; set; }
/// <summary>
/// Gets an <see cref="ChartNumberFormat"/> instance allowing to set number format for the data labels of the
/// entire series.
/// </summary>
public ChartNumberFormat NumberFormat { get; set; }

Use Case:

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Pie, 432, 252);
Chart chart = shape.Chart;
chart.Series.Clear();
ChartSeries series = chart.Series.Add("Series 1", 
    new string[] { "Category1", "Category2", "Category3" }, 
    new double[] { 2.7, 3.2, 0.8 });
ChartDataLabelCollection labels = series.DataLabels;
labels.ShowPercentage = true;
labels.ShowValue = true;
labels.ShowLeaderLines = false;
labels.Separator = " - ";
doc.Save(dir + "Demo.docx");