Aspose.Words for Java 22.6 Release Notes

Major Features

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

  • Implemented an ability to convert PDF documents to fixed page formats with high fidelity and performance.
  • DrawingML charts public API was extended to support gradient, texture and pattern fills.
  • Implemented a solid text fill effect inheritance exception that mimics the behavior of MS Word.
  • Saving progress notifications were extended for ODT format.

Full List of Issues Covering all Changes in this Release (Reported by Java Users)

KeySummaryCategory
WORDSJAVA-2731XHTML Entities do not resolved during loading Epub documents.New Feature
WORDSJAVA-2651Bookmark.Text does not return All the Text EnclosedBug
WORDSNET-21860DOCX to PDF - A picture in table moves to next page resulting in increase in page countBug
WORDSNET-22581Problem wirh bookmark upon comparing documentsBug
WORDSNET-23778Revision on list item is rendered incorrectlyBug
WORDSNET-22810Error converting DOCX to HTMLBug
WORDSNET-23803stylePaneFormatFilter values are chnaged after open/save DOCX documentBug
WORDSNET-23793Image resolution is changed after saving to HTML with ScaleImageToShapeSize = falseBug
WORDSNET-23840Part of content is invisible after renderingBug
WORDSNET-23797Table Alignment Issue in converting RTF files to PDFBug

Full List of Issues Covering all Changes in this Release (Reported by .NET Users)

KeySummaryCategory
WORDSNET-22072Add support for gradient, texture and pattern fills in ChartsNew Feature
WORDSNET-23059Rendering PDFs directly to fixed formats without intermediate flow layoutNew Feature
WORDSNET-22890Add loading progress notification for ODT documentsNew Feature
WORDSNET-23167Consider supporting “User Field” upon importing ODTNew Feature
WORDSNET-7284Vertical space between Picture and TextBox is lost in PDFNew Feature
WORDSNET-7282Text lines in Lists do not have correct left indentation in PDFNew Feature
WORDSNET-6264Left indent of text in second line of List is incorrect in PDFNew Feature
WORDSNET-23615Output AZW3 document isn’t correctly displayed in Kindle for PCBug
WORDSNET-22805HTML to PDF conversion issue with page borderBug
WORDSNET-23633Remove obsolete properties from ChartDataPointCollection and ChartDataLabelCollection classesBug
WORDSNET-23908Resaved document throws an error in MS WordBug
WORDSNET-14308Bookmarks are lost after using Document.Compare methodBug
WORDSNET-22952Bookmark is lost after comparing documentsBug
WORDSNET-22550Document.Compare breaks inserted cross-referencesBug
WORDSNET-23885Shape becomes visible after open/save DOCX documentBug
WORDSNET-23842Text with effects is rendered improperlyBug
WORDSNET-23581System.NotImplementedException occurs on accessing the Fill propertyBug
WORDSNET-23876Rejecting delete revision removes the deleted textBug
WORDSNET-23826Aspose.Words produces corrupted DOCX documentBug
WORDSNET-23906TypeInitializationException is thrown when Shaping.HarfBuzz is used in .NET6Bug
WORDSNET-23871Support EQ field overstrike alignmentBug
WORDSNET-23809Text images are lost during Pdf2Word conversionBug
WORDSNET-23859FileCorruptedException is thrown upon loading ODT documentBug
WORDSNET-23694RevisionColor missing ClassicRed and ClassicBlue valuesBug
WORDSNET-23785Document.Save method modifying documents unexpectedlyBug
WORDSNET-23818FormatException is thrown upon rendering document with chartBug
WORDSNET-23870Export equitation matrix columns alignmentBug
WORDSNET-23843Extra space is added after tableBug
WORDSNET-23613Tables were not detected during PDF to DOCX conversionBug
WORDSNET-23777Default content of SDT becomes visible after processing documentBug
WORDSNET-23806ArgumentOutOfRangeException is thrown upon conversion from DOC to DOCXBug
WORDSNET-23836Progress does not work while loading blank fileBug
WORDSNET-20805CSS Borders not rendering around div within a divBug
WORDSNET-23761Header/footer does not match MS Word on RTF to DOCX conversionBug
WORDSNET-23844List numbering is wrong for lists from HTML altChunk’sBug
WORDSNET-23834Section breaks are missing from XML fileBug
WORDSNET-23154Vertical axis scaling is changed after rendering chartBug
WORDSNET-18806Text placement in the axle labels is different after the conversion in PDFBug
WORDSNET-23035InvalidOperationException: Infinite loop detected. Check if fixedBug
WORDSNET-21068One Table became multiple Tables when converting DOCX to HTMLBug
WORDSNET-23812Timestamp data of the inserted/deleted text gets modifiedBug
WORDSNET-12365Font rendering issue with Persian text in output PDFBug
WORDSNET-23808Separator elements are added instead of spacesBug
WORDSNET-23790Tab of list label is highlighted after renderingBug
WORDSNET-23780Paragraph first line indentation is incorrect after renderingBug
WORDSNET-9646DOC to PDF conversion issue with image renderingBug
WORDSNET-23813Attempt to read empty bfchar section gives InvalidOperationExceptionBug
WORDSNET-23773Part of content is missed after loading RTF documentBug
WORDSNET-23744InvalidOperationException is thrown on DOCX to DOC conversionBug
WORDSNET-23738NullReferenceException is thrown upon rendering documentBug
WORDSNET-23614Exception on conversion to PDFBug
WORDSNET-23659Data labels of stacked bar chart are lost after renderingBug
WORDSNET-23726Fix StringComparison warningsBug
WORDSNET-23727Fix some StringComparison warnings in the codeBug
WORDSNET-23627Placeholder is rendered instead of real value in data labelBug
WORDSNET-23700Text in list item starts in wrong position after wrapping around paragraphBug
WORDSNET-23796InvalidOperationException is thrown upon rendering documentBug
WORDSNET-23784ArgumentOutOfRangeException is thrown upon appending documentBug
WORDSNET-23792Review of Particular file with “Gabriola” font is displayed incorrect in FF/ChromeBug
WORDSNET-23756InvalidCastException is thrown when set text of bookmark, which is inside OfficeMathBug
WORDSNET-21069Wrong Style Color applied to some Rows when converting DOCX to HTMLBug

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 22.6. 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 constants to RevisionColor enum

Related issue: WORDSNET-23694

Starting from version 2019 of MS Word, it has the ability to set additional colors for revisions. A new revision color constants have been added.

/// <summary>
/// Represents 0000ff color.
/// </summary>
ClassicBlue,
/// <summary>
/// Represents ff0000 color.
/// </summary>
ClassicRed,

Now it is really easy to set new colors for the document revisions.

Use Case:

// Set new color for the insert revisions
doc.LayoutOptions.RevisionOptions.InsertedTextColor = RevisionColor.ClassicBlue;

Changed behavior of Fill.OneColorGradient and Fill.TwoColorGradient methods

Related issue: WORDSNET-22072

The following changes have been implemented:

  1. Now the OneColorGradient and TwoColorGradient methods of the Fill class can be used to create gradient fills in charts (see ChartDataPoint.Format.Fill, ChartMarker.Format.Fill and ChartSeries.Format.Fill properties). System.NotImplementedException was thrown in the previous versions.

  2. Behavior of the following overloads of the OneColorGradient and TwoColorGradient methods have been changed:

    /// <summary>
    /// Sets the specified fill to a one-color gradient using the specified color.
    /// </summary>
    /// <param name="color">The color to build the gradient.</param>
    /// <param name="style">The gradient style <see cref="Drawing.GradientStyle"/></param>
    /// <param name="variant">The gradient variant <see cref="Drawing.GradientVariant"/></param>
    /// <param name="degree">The gradient degree. Can be a value from 0.0 (dark) to 1.0 (light).</param>
    public void OneColorGradient(Color color, GradientStyle style, GradientVariant variant, double degree);
     
    /// <summary>
    /// Sets the specified fill to a two-color gradient.
    /// </summary>
    /// <param name="color1">The first color to build the gradient.</param>
    /// <param name="color2">The second color to build the gradient.</param>
    /// <param name="style">The gradient style <see cref="Drawing.GradientStyle"/>.</param>
    /// <param name="variant">The gradient variant <see cref="Drawing.GradientVariant"/></param>
    public void TwoColorGradient(Color color1, Color color2, GradientStyle style, GradientVariant variant);

In the past, their behavior was as if a gradient was created using the overloads without specifying colors, and then fore and back color were set. Now the behavior is reversed: as if you first define the colors, and then using the overloads to build the gradient.

Removed obsolete PdfDigitalSignatureHashAlgorithm enum values

Related issue: WORDSNET-23473

Removed obsolete PdfDigitalSignatureHashAlgorithm enum values Sha1 and Md5.

SHA1 and MD5 hash algorithms for digital signature are deprecated in the latest PDF specification due to security issues. So, please, use the one of the available algorithms instead.

Removed obsolete methods of ChartDataPointCollection and ChartDataLabelCollection classes

Related issue: WORDSNET-23633

The following obsolete methods have been removed:

public class ChartDataLabelCollection
{
    /// <summary>
    /// Adds new <see cref="ChartDataLabel"/> at the specified index.
    /// </summary>
    /// <param name="index">Target data label index.</param>
    [Obsolete("When ChartSeries.HasDataLabels is 'true', all data labels are available in this collection.")]
    public ChartDataLabel Add(int index);
 
    /// <summary>
    /// Clears format of a <see cref="ChartDataLabel"/> at the specified index.
    /// </summary>
    /// <param name="index">The zero-based index of the chart data label to clear format.</param>
    [Obsolete("Use the ChartDataLabel.ClearFormat method instead.")]
    public void RemoveAt(int index);
 
    /// <summary>
    /// Clears format of all <see cref="ChartDataLabel"/> in this collection.
    /// </summary>
    [Obsolete("Use the ClearFormat method instead.")]
    public void Clear();
}
 
public class ChartDataPointCollection
{
    /// <summary>
    /// Adds new <see cref="ChartDataPoint"/> at the specified index.
    /// </summary>
    /// <param name="index">Target data point index.</param>
    [Obsolete("All data points are available in this collection.")]
    public ChartDataPoint Add(int index);
 
    /// <summary>
    /// Clears format of a <see cref="ChartDataPoint"/> at the specified index.
    /// </summary>
    /// <param name="index">The zero-based index of the data point to clear format.</param>
    [Obsolete("Use the ChartDataPoint.ClearFormat method instead.")]
    public void RemoveAt(int index);
 
    /// <summary>
    /// Clears format of all <see cref="ChartDataPoint"/> in this collection.
    /// </summary>
    [Obsolete("Use the ClearFormat method instead.")]
    public void Clear();
}

Added new class for saving PDFs to other fixed formats

Related feature task: WORDSNET-23059

We’ve added a new way to work with PDF input files. Now they can be converted into a fixed format without using Words layout model.

I.e. the feature runs without Document class and returns the result in a MemoryStream object.

Example:

var pdfRenderer = new PdfFixedRenderer();
var options = new PdfFixedOptions() { PageIndex = 0, PageCount = 2 };
var resultStream = pdfRenderer.SavePdfAsHtml(pdfStream, options);

Pros:

  • More accurate conversion (positions of text and other elements).
  • Better performance and memory usage (less logic to run, no need to build flow models, etc).

Cons:

  • The list of output formats is limited for now (PDF, Html, XPS, Jpeg, Png, Tiff, Bmp).
  • There is no way to edit the data during the conversion.
  • A small amount of options such as Password, page range and Jpeg image quality.

Supported methods:

SavePdfAsHtml(...);
SavePdfAsXps(...);
SavePdfAsImages(...);
SavePdfAsPdf(...);

Available options:

  • PageIndex and PageCount can be used to select a subset of pages.
  • Password - allows to decode an encrypted PDF. The result would be decrypted.
  • JpegQuality - can be provided before SavePdfAsImages calls to setup output Jpeg image quality.
  • ImageFormat - should be used to specify the output image format for SavePdfAsImages.

All options are optional and can be ommited in favor of default values.